totten/lurkerlite

资源监视器 - henrikbjorn/lurker 的轻量级版本,无依赖

1.3.0 2020-09-01 10:01 UTC

This package is auto-updated.

Last update: 2024-09-04 09:05:12 UTC


README

Lurkerlite 为 PHP 提供文件和目录变更监控的实用工具。它是 henrikbjorn/lurker 的分支。

Build Status

用法

使用 composer 安装包

composer require totten/lurkerlite

Lurker 通过向资源监视器提供跟踪 ID(即事件名称)和要跟踪的资源路径来工作。

当所有要跟踪的资源都已添加后,您会希望为它们添加事件监听器,以便在资源更改时采取行动。

<?php

use Lurker\Event\FilesystemEvent;
use Lurker\ResourceWatcher;

$watcher = new ResourceWatcher;
$watcher->track('twig.templates', '/path/to/views');

$watcher->addListener('twig.templates', function (FilesystemEvent $event) {
    echo $event->getResource() . 'was' . $event->getTypeString();
});

$watcher->start();

上述示例将监视所有 createdeletemodify 事件。这可以通过传递 track() 的第三个参数来控制。

<?php

$watcher->track('twig.templates', '/path/to/views', FilesystemEvent::CREATE);
$watcher->track('twig.templates', '/path/to/views', FilesystemEvent::MODIFY);
$watcher->track('twig.templates', '/path/to/views', FilesystemEvent::DELETE);
$watcher->track('twig.templates', '/path/to/views', FilesystemEvent::ALL);

请注意,FilesystemEvent::ALL 是一个特殊情况,当然意味着它将监视每种类型的事件。

比较

totten/lurkerlite v1.3 是 henrikbjorn/lurker v1.2 的分支。原始 lurker 提供了一个可移植的 ResourceWatcher,用于监控文件和目录。根据操作系统和运行时支持,它选择不同的后端驱动程序来跟踪文件。这是一个很好的想法,实现有很多测试。

lurkerlite 的独特之处在于它没有对其他包的正式依赖,这意味着它是

  • 更不容易出现版本冲突和过时的依赖
  • 更安全地嵌入到更多上下文中

lurkerlite 应该可以作为 lurker 的直接替换 除非 您之前已自定义事件分发器。如果您已自定义事件分发器,请参阅 CHANGELOG.md

已知问题(欢迎修复

Lurker 设计为支持多个文件监控后端,最著名的是

  • RecursiveIteratorTracker:基于文件系统轮询的可移植(但效率较低)的后端。
  • InotifyTracker:基于 Linux inotify API 和 PECL 的 inotify 扩展的更高效的后端。

在撰写本文时,InotifyTracker 的测试未通过,原因尚未确定。(它是否曾经工作过?是否仅在特定环境中工作?)因此,它默认禁用。要使用不稳定实现,请调用 new ResourceWatcher(new InotifyTracker())

另请参阅

  • \Lurker\Tests\Tracker\TrackerTest::testMoveSubdirResource()
  • \Lurker\Tests\Tracker\InotifyTrackerTest::testMoveSubdirResource()
  • flint#32