allejo / resource-watcher
简单的PHP资源监视库 - 无Laravel依赖
Requires
- php: >=5.3.0
- symfony/filesystem: ^2.8|^3.0
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.0
Conflicts
This package is not auto-updated.
Last update: 2022-02-01 12:57:42 UTC
README
资源监视器允许您监视资源的任何更改。这意味着您可以监视一个目录,然后监听该目录内文件或目录本身的任何更改。
这是一个没有Laravel依赖的Jason Lewis的项目分支Jason Lewis's project,并使用Symfony Filesystem代替。这个分支旨在供那些不想从其他项目中添加另一个Filesystem对象的人使用。
安装
使用composer将此项目作为依赖项添加。
composer require allejo/resource-watcher
用法
资源监视器最好在控制台中使用。控制台命令的示例可以在watcher文件中找到。此文件已注释,以提供有关如何配置和使用资源监视器的示例。一旦您根据自己的喜好定制了命令,就可以从您的控制台运行它。
$ php watcher
您对资源所做的任何更改都将输出到控制台。
快速概览
要监视资源,您首先需要一个JasonLewis\ResourceWatcher\Watcher
的实例。此类有几个依赖项(JasonLewis\ResourceWatcher\Tracker
和Symfony\Component\Filesystem\Filesystem
),也必须实例化。
$files = new Symfony\Component\Filesystem\Filesystem; $tracker = new JasonLewis\ResourceWatcher\Tracker; $watcher = new JasonLewis\ResourceWatcher\Watcher($tracker, $files);
现在我们有了监视器,我们可以为给定的资源创建一个监听器。
$listener = $watcher->watch('path/to/resource');
当您监视一个资源时,会返回一个JasonLewis\ResourceWatcher\Listener
的实例。有了这个,我们现在可以监听资源上的某些事件。
我们可以监听三个事件:modify
、create
和delete
。您提供给监听器的回调函数接收两个参数,第一个是JasonLewis\ResourceWatcher\Resource\ResourceInterface
的实现,第二个是资源的绝对路径。
$listener->modify(function($resource, $path) { echo "{$path} has been modified.".PHP_EOL; });
您也可以使用别名方法。
$listener->onModify(function($resource, $path) { echo "{$path} has been modified.".PHP_EOL; });
您还可以监听这些事件中的任何一个。这次回调函数接收一组不同的参数,第一个是JasonLewis\ResourceWatcher\Event
的实例,其余两个与之前相同。
$listener->anything(function($event, $resource, $path) { });
请记住,每次调用
$watcher->watch()
都会返回一个JasonLewis\ResourceWatcher\Listener
的实例,所以请确保将监听器附加到正确的实例上!
一旦您监视了一些资源并设置了监听器,就可以开始监视过程。
$watcher->start();
默认情况下,监视器会每秒轮询一次更改。您可以通过传递给start
方法的可选第一个参数来调整此设置。轮询间隔以微秒为单位给出,因此1,000,000微秒是1秒。监视将继续,直到从控制台取消为止。要设置超时,请将监视将终止前的微秒数作为第二个参数传递。
《start》方法还可以提供一个回调函数作为可选的第三个参数。这个回调函数将在检查资源变化之前触发。
$watcher->start(1000000, null, function($watcher) { // Perhaps perform some other check and then stop the watch. $watcher->stop(); });
许可证
资源监视器是在2条款BSD许可证下发布的。有关更多详细信息,请参阅LICENSE
文件。