letuananh1873 / resource-watcher
简单的PHP资源监控库。
Requires
- php: >=5.3.0
- illuminate/filesystem: ~4.0|~5.0
- illuminate/support: ~4.0|~5.0
Requires (Dev)
- mockery/mockery: ~0.9
README
资源监控器允许您监控资源的任何更改。这意味着您可以监控一个目录,并监听该目录中文件或目录本身的任何更改。
安装
要安装Resource Watcher,请将其添加到您的composer.json
文件的requires
密钥中。
"jasonlewis/resource-watcher": "1.2.*"
然后通过composer update
更新您的项目。
用法
Resource Watcher最好从控制台使用。在watcher
文件中可以找到一个控制台命令的示例。该文件已注释,以向您展示如何配置和使用资源监控器。一旦您根据自己的喜好定制了命令,您就可以从您的控制台运行它。
$ php watcher
您对资源所做的任何更改都将输出到控制台。
快速概览
要监控资源,您首先需要一个JasonLewis\ResourceWatcher\Watcher
的实例。此类有几个依赖项(JasonLewis\ResourceWatcher\Tracker
和Illuminate\Filesystem\Filesystem
),也必须实例化。
$files = new Illuminate\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(); });
框架集成
Laravel 4和Laravel 5
包含Laravel框架的service provider。此service provider会将一个JasonLewis\ResourceWatcher\Watcher
的实例绑定到应用程序容器中的watcher
键下。
在app/config/app.php
中的提供者数组中注册JasonLewis\ResourceWatcher\Integration\LaravelServiceProvider
。
$listener = $app['watcher']->watch('path/to/resource'); // Or if you don't have access to an instance of the application container. $listener = app('watcher')->watch('path/to/resource');
许可证
Resource Watcher在2-clause BSD许可证下发布。有关更多详细信息,请参阅LICENSE
文件。