cartalyst/resource-watcher

该软件包最新版本(v1.1.8)没有可用的许可信息。

简单的PHP资源监视库。

v1.1.8 2023-06-21 22:10 UTC

This package is auto-updated.

Last update: 2024-09-22 00:42:03 UTC


README

资源监视器允许您监视资源的任何更改。这意味着您可以监视一个目录,然后监听该目录内或目录本身的任何文件更改。

Build Status

安装

要安装Resource Watcher,请将其添加到您的composer.json文件中的requires键。

"jasonlewis/resource-watcher": "1.1.*"

然后使用composer update更新您的项目。

用法

Resource Watcher最好从控制台使用。控制台命令的示例可以在watcher文件中找到。此文件已注释,以供您了解如何配置和使用资源监视器。一旦您根据自己的喜好定制了命令,就可以在控制台运行它。

$ php watcher

对资源所做的任何更改都将输出到控制台。

快速概述

要监视资源,您首先需要一个JasonLewis\ResourceWatcher\Watcher实例。该类有一些依赖项(JasonLewis\ResourceWatcher\TrackerIlluminate\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实例。有了这个,我们现在可以监听资源上的某些事件。

我们可以监听三个事件:modifycreatedelete。您提供给监听器的回调函数接收两个参数,第一个是一个实现了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 4框架的服务提供程序。此服务提供程序将JasonLewis\ResourceWatcher\Watcher实例绑定到应用程序容器中的watcher键。

$listener = $app['watcher']->watch('path/to/resource');

// Or if you don't have access to an instance of the application container.
$listener = App::make('watcher')->watch('path/to/resource');

app/config/app.php中的提供者数组中注册JasonLewis\ResourceWatcher\Integration\LaravelServiceProvider

许可

Resource Watcher在2条款BSD许可下发布。有关详细信息,请参阅LICENSE