funct-gmbh / php-watcher
一旦检测到源代码更改,自动重启 PHP 应用程序
Requires
- php: ^7.4|^8.0
- ext-json: *
- ext-pcntl: *
- alecrabbit/php-cli-snake: ^0.5
- react/child-process: ^0.6.1
- react/event-loop: ^1.1
- react/promise: ^2.8
- react/stream: ^1.0.0
- symfony/console: ^4.3 || ^5.0 || ^6.0
- symfony/finder: ^4.3 || ^5.0 || ^6.0
- symfony/yaml: ^4.3 || ^5.0 || ^6.0
- yosymfony/resource-watcher: ^2.0
Requires (Dev)
- clue/block-react: ^1.3
- phpunit/phpunit: ^8.0
- symfony/process: ^4.3
- vimeo/psalm: ^3.8
This package is auto-updated.
Last update: 2024-09-24 17:55:06 UTC
README
PHP-watcher 通过在目录中检测到文件更改时自动重启,帮助开发长时间运行的 PHP 应用程序。
它看起来是这样的
PHP-watcher 不需要修改您的代码或开发方式。 php-watcher
是 php
的替代包装器,要使用 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.yml
、php-watcher.yml
或 php-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 将会通知您。
旋转器
默认情况下,监视器输出一个漂亮的旋转器,指示进程正在运行并监视您的文件。但如果您的系统不支持 ansi 编码,监视器将尝试检测并禁用旋转器。或者,您总是可以使用选项 '--no-spinner' 手动禁用旋转器。
php-watcher server.php --no-spinner
归属
基于 seregazhuk/php-watcher 的工作