funct-gmbh/php-watcher

一旦检测到源代码更改,自动重启 PHP 应用程序

v1.0.1 2022-01-24 11:56 UTC

README

PHP Version Total Downloads

Latest Stable Version Latest Version Latest Unstable Version

License

watcher logo

PHP-watcher 通过在目录中检测到文件更改时自动重启,帮助开发长时间运行的 PHP 应用程序。

它看起来是这样的

watcher screenshot

PHP-watcher 不需要修改您的代码或开发方式。 php-watcherphp 的替代包装器,要使用 PHP -watcher,请在执行脚本时将命令行中的 php 替换为 php-watcher

目录

安装

您可以通过以下方式全局安装此包

composer global require funct-gmbh/php-watcher

之后,phpunit-watcher watch 可以在任何系统目录下运行。

或者,您可以将包作为项目的本地开发依赖项安装

composer require funct-gmbh/php-watcher --dev

本地安装后,您可以使用 vendor/bin/php-watcher 运行它。

使用方法

所有示例都假设您已全局安装了包。如果您选择了本地安装,请将 vendor/bin/ 预先添加到 php-watcher 所在的所有位置。

PHP-watcher 包装了您的应用程序,因此您可以将所有通常传递给应用程序的参数传递给它

php-watcher [your php app]

使用 PHP-Watcher 非常简单。如果您的应用程序接受主机和端口号作为参数,我可以用 --arguments 选项启动它

php-watcher server.php --arguments localhost --arguments 8080

此脚本的任何输出都将带有 [php-watcher] 前缀,否则您的应用程序的所有输出(包括错误)都将按预期输出。

配置文件

PHP-Watcher 支持通过配置文件自定义其行为。选项文件可以命名为 .php-watcher.ymlphp-watcher.ymlphp-watcher.yml.dist。工具将按此顺序在当前工作目录中查找文件。可以通过 --config <file> 选项指定替代本地配置文件。

具体如下,命令行参数将始终覆盖配置文件设置

  • 命令行参数
  • 本地配置

配置文件可以采用任何命令行参数,例如

watch:
  - src
  - config
extensions:
  - php
  - yml
ignore:
  - tests

监控多个目录

默认情况下,PHP-Watcher 监控当前工作目录。如果您想控制此选项,请使用 --watch 选项添加特定路径

php-watcher --watch src --watch config server.php

现在 PHP-Watcher 只会在 ./src./config 目录中检测到更改时重启。默认情况下遍历子目录,因此无需显式包含它们。

指定扩展监视列表

默认情况下,PHP-Watcher 查找具有 .php 扩展名的文件。如果您使用 --ext 选项并监控 app,yml,PHP-Watcher 将监控具有 .php.yml 扩展名的文件

php-watcher server.php --ext=php,yml

现在 PHP-Watcher 将在目录(或子目录)中的文件(或子目录)更改时重启,这些文件的扩展名为 .php.yml

忽略文件

默认情况下,PHP-Watcher 仅在 .php 文件更改时重启。在某些情况下,您可能希望忽略一些特定的文件、目录或文件模式,以防止 PHP-Watcher 提前重启您的应用程序。

这可以通过命令行完成

php-watcher server.php --ignore public/ --ignore tests/

或忽略特定文件

php-watcher server.php --ignore src/config.php

也可以忽略模式(但请确保引用参数)

php-watcher server.php --ignore 'src/config/*.php'

请注意,默认情况下,PHP-Watcher 会忽略所有 和版本控制系统(VCS)文件。

延迟重启

在某些情况下,您可能希望等待多个文件已更改。检查新文件更改的超时时间为1秒。如果您正在上传多个文件且花费了一些时间,这可能会导致您的应用程序不必要地多次重启。

要添加额外的节流或延迟重启,请使用 --delay 选项

php-watcher server.php --delay 10 

为了更高的精度,请使用浮点数

php-watcher server.php --delay 2.5 

默认可执行文件

默认情况下,PHP-Watcher 使用 php 可执行文件来运行您的脚本。如果您想提供自己的可执行文件,请使用 --exec 选项或在配置文件中使用 executable 参数。如果您正在使用多个 PHP 版本,这尤其有用。

executable: php

或使用命令行界面(CLI)

php-watcher server.php --exec php7

运行非 PHP 脚本

PHP-Watcher 还可以用于执行和监控其他非 PHP 程序。例如,您可以使用 PHP-Watcher 监听 *.js 文件并使用 node 可执行文件来运行它们

php-watcher server.js --exec node --watch app --ext=js

上述命令使用 NodeJS 启动 server.js 并监听 app 目录的更改。

优雅地重新加载脚本

PHP-watcher 可以将您指定的任何信号发送到您的应用程序。

php-watcher --signal SIGTERM server.php

您的应用程序可以如下处理信号

declare(ticks = 1);

pcntl_signal(SIGTERM, 'terminationHandler');

function terminationHandler()
{
    // ...        
}

默认情况下,PHP-watcher 发送 SIGINT 信号。

自动重启

PHP-watcher 最初是为了重启长时间运行的过程(如 web 服务器)而编写的,但它也支持干净退出的应用程序。如果您的脚本干净退出,监视器将继续监控目录(或目录),并在有更改时重启脚本。如果脚本崩溃,PHP-watcher 将会通知您。

app exit

旋转器

默认情况下,监视器输出一个漂亮的旋转器,指示进程正在运行并监视您的文件。但如果您的系统不支持 ansi 编码,监视器将尝试检测并禁用旋转器。或者,您总是可以使用选项 '--no-spinner' 手动禁用旋转器。

php-watcher server.php --no-spinner

归属

基于 seregazhuk/php-watcher 的工作

许可证

MIT http://rem.mit-license.org