PHP-Watcher:简化长期应用程序开发的工具



我们喜欢PHP的简单性:您编写代码,在浏览器中刷新页面,然后立即查看更改。 但是,如果涉及到控制台命令(可能是长期存在的过程)(例如,如果我们编写异步HTTP服务器来上传文件),则开发会很痛苦。

PHP生态系统中没有合适的解决方案,可以在对源代码进行更改时自动重新启动应用程序。 因此,我决定使用纯PHP并通过Composer进行访问来制作我的工具。

就像Nodemon,但是在PHP中


有一段时间我本人使用Nodemon 。 这是来自Node.js的工具,但是,如果您对其进行一些自定义,则可以将其与PHP脚本一起使用。 但是实际上,我不想安装Node.js并将一堆我不知道的NPM软件包拖到异步PHP应用程序中以重新启动它。

自从我在Twitter上积极交流以来,我问那里还有谁遇到这个问题,并希望找到解决方案。 出于兴趣,我坐下来编写了一个仅在PHP和PHP中提供与Nodemon相同功能的工具。



一个月过去了:使用PHP-Watcher,您不再需要安装Nodemon或任何其他NPM软件包来开发长期存在的PHP应用程序。

就是这样


可以通过Composer安装该库:

composer global require seregazhuk/php-watcher 

想象一下,我们正在开发一个基于Symfony的长期应用程序。 我们应用程序的入口点是public / index.php文件。 我们要跟踪src和config文件夹中的更改。 我们还希望应用程序在更改源代码或配置参数后自动重新启动。 解决此问题的方法如下:

 php-watcher public/index.php --watch src --watch config 

该命令将运行脚本public / index.php,它将开始跟踪src和config目录中的更改。 一旦文件中的任何一个发生更改,PHP-Watcher都会重新启动脚本。

默认情况下,它仅跟踪对PHP文件的更改。 但是Symfony将其配置存储在yaml中。 因此,我们需要明确告诉手表,以便它可以跟踪PHP和yaml文件。 这是使用--ext选项完成的:

 php-watcher public/index.php --watch src --watch config --ext php,yaml 

假设我们知道不需要在src目录中进行任何更改就重新启动应用程序。 例如,我们想忽略src / Migrations子目录中的更改。 在这种情况下,可以使用--ignore选项:

 php-watcher public/index.php --watch src --watch config --ext php,yaml --ignore Migrations 

现在,PHP-Watcher将开始跟踪src和config目录中的更改,但是将忽略Migrations子目录中的任何更改。 此外,默认情况下,它会忽略所有点文件和VCS文件中的更改。

Watcher不仅支持通过命令行选项自定义其行为,还支持通过配置文件自定义其行为。 如果您不想每次都在命令行中传递大量选项和参数,则可以创建一个.php-watcher.yml配置文件。 例如,可以将以下命令替换为之前的命令:

 watch: - src - config extensions: - php - yaml ignore: - Migrations 

有了这样的文件,我们只需指定仅需要重新启动的PHP脚本即可简单地激活“监视”。 所有其他设置将从文件中获取:

 php-watcher public/index.php 

如果我们同时拥有配置文件和命令行参数,会发生什么? 在这种情况下,从命令行传递的所有参数都将覆盖配置文件中的相应值。

默认情况下,PHP-Watcher使用PHP可执行文件运行脚本。 我们在终端中编写命令:

 php-watcher public/index.php 

在后台,使用php命令public / index.php创建一个子进程。 在大多数情况下,这就是您所需要的。 但是,如果您的环境具有其他可执行文件,则可以显式指定要执行的命令。 例如,当我们在同一系统上有多个版本的PHP,并且想要使用php7.4可执行文件运行应用程序时,可以使用--exec选项并指定可执行文件:

 php-watcher public/index.php --exec php7.4 

通过配置文件进行相同的操作:

 watch: - src - config executable: php7.4 

如果PHP-Watcher崩溃,它不会自动重启。 在开发环境中,这并不是特别必要-因为在开发新应用程序时,有时会崩溃是很正常的。 如果应用程序崩溃(以0以外的代码终止),“监视”将让我们知道。 修复代码后,更改将在源代码中被检测到-应用程序将重新启动。

感谢您的关注! 有关PHP-Watcher的更多信息,可以在GitHub的项目主页上找到 。 该文档描述了使用的基本模式。 该项目仍在开发中,但是API已经相当稳定。 如果您使用它,我会很高兴。

PS随时在GitHub上发布意见和建议。

Source: https://habr.com/ru/post/zh-CN475624/


All Articles