seregazhuk / php-watcher
当源代码发生变化时自动重新启动PHP应用程序
Requires
- php: ^7.2
- ext-json: *
- ext-pcntl: *
- alecrabbit/php-cli-snake: ^0.5
- react/child-process: ^0.6.1
- react/event-loop: ^1.1
- react/stream: ^1.0.0
- symfony/console: ^4.3 || ^5.0
- symfony/finder: ^4.3 || ^5.0
- symfony/yaml: ^4.3 || ^5.0
- yosymfony/resource-watcher: ^2.0
Requires (Dev)
- clue/block-react: ^1.3
- phpunit/phpunit: ^8.0
- symfony/process: ^4.3
This package is auto-updated.
Last update: 2024-09-23 03:09:47 UTC
README
PHP-watcher 通过在检测到目录中的文件更改时自动重新启动应用程序,帮助开发长时间运行的PHP应用程序。
它看起来是这样的
PHP-watcher 不需要修改您的代码或开发方法。 php-watcher
是 php
的替代包装器,要使用 PHP -watcher,在执行脚本时将命令行中的 php
替换为 php-watcher
。
目录
安装
您可以像这样全局安装此软件包
composer global require seregazhuk/php-watcher
之后,phpunit-watcher watch 可以在您的系统上的任何目录中运行。
或者,您可以将软件包作为项目的开发依赖项本地安装
composer require seregazhuk/php-watcher --dev
本地安装后,您可以使用 vendor/bin/php-watcher
运行它。
使用方法
所有示例都假设您已全局安装了软件包。如果您选择本地安装,请在提及 php-watcher
的任何地方使用 vendor/bin/
。
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-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
bin 可执行文件来运行你的脚本。如果你想提供自己的可执行文件,请使用 --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
许可
MIT http://rem.mit-license.org
我该如何感谢你呢?
为什么不为这个 GitHub 仓库点个赞?我会很高兴得到关注!或者,你也可以通过 PayPal 向我的项目捐赠。
谢谢!