totten / lurkerlite
资源监视器 - henrikbjorn/lurker 的轻量级版本,无依赖
This package is auto-updated.
Last update: 2024-09-04 09:05:12 UTC
README
Lurkerlite 为 PHP 提供文件和目录变更监控的实用工具。它是 henrikbjorn/lurker 的分支。
用法
使用 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();
上述示例将监视所有 create
、delete
和 modify
事件。这可以通过传递 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
:基于 Linuxinotify
API 和 PECL 的inotify
扩展的更高效的后端。
在撰写本文时,InotifyTracker
的测试未通过,原因尚未确定。(它是否曾经工作过?是否仅在特定环境中工作?)因此,它默认禁用。要使用不稳定实现,请调用 new ResourceWatcher(new InotifyTracker())
。
另请参阅
\Lurker\Tests\Tracker\TrackerTest::testMoveSubdirResource()
\Lurker\Tests\Tracker\InotifyTrackerTest::testMoveSubdirResource()
- flint#32