seregazhuk/php-watcher

当源代码发生变化时自动重新启动PHP应用程序

v0.5.2 2019-12-07 08:45 UTC

README

PHP Version Build Status 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 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.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-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 将会通知你。

app exit

旋转器

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

php-watcher server.php --no-spinner

许可

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

我该如何感谢你呢?

为什么不为这个 GitHub 仓库点个赞?我会很高兴得到关注!或者,你也可以通过 PayPal 向我的项目捐赠。

Support me with some coffee

谢谢!