andrewmackrodt / fsnotify
基于事件的PHP文件系统监视器
v0.1.1
2024-09-18 08:54 UTC
Requires
- php: ^7.1|>=8.0
- amphp/process: ^1.1
- amphp/react-adapter: dev-promise
- composer/xdebug-handler: ^1.3
- react/event-loop: ^1.1
- symfony/event-dispatcher: ^4.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.15
- mockery/mockery: ^1.2
- phpunit/phpunit: ^8.2
- sempro/phpunit-pretty-print: ^1.0
This package is not auto-updated.
Last update: 2024-09-19 07:14:57 UTC
README
基于事件的PHP文件系统监视器。FsNotify完全基于异步和事件,使用Amp和Symfony\EventDispatcher。
† 不包括用于确定文件元数据的stat操作
用法
快速开始
<?php use Denimsoft\FsNotify\Event\FileEvent; use Denimsoft\FsNotify\FsNotifyBuilder; require_once __DIR__ . '/vendor/autoload.php'; $fsNotify = (new FsNotifyBuilder()) ->addWatcher(__DIR__ . '/src', true) ->getBuilder() ->addChangeListener(function (FileEvent $event) { echo sprintf( "[%s] (%s) \"%s\" %s\n", date('c'), $event->getEventName(), $event->getFilepath(), json_encode($event->getMetadata()) ); }) ->createFsNotify(); $fsNotify->start();
高级用法
FsNotify支持通过可配置的回调和过滤器监控多个路径。请参阅示例目录以获取完整用法
此库的开发考虑到laravel-ide-helper的使用场景,它强调了一个相对复杂但实用的使用场景。
适配器
PhpAdapter - 如果没有其他适配器支持,将回退到该适配器。PhpAdapter使用文件轮询来检测更改。适配器默认配置为1秒的轮询间隔。它适用于监控少量文件。
FswatchAdapter - fswatch需要GNU CLI工具fswatch,它的性能比PhpAdapter更好,可以几乎实时地检测文件更改。在大多数情况下都首选它,但在传播大量文件删除(例如删除PHP或JavaScript项目的vendor或node_modules文件夹)时可能会较慢;然而,这种情况被认为是不典型的,不应影响大多数用户。它最初也不递归到复制的或移动的目录中,但再次强调,这不是在执行第三方工具之前监控Laravel模型或静态资产目录更改时的典型要求。