andrewmackrodt/fsnotify

基于事件的PHP文件系统监视器

v0.1.1 2024-09-18 08:54 UTC

This package is not auto-updated.

Last update: 2024-09-19 07:14:57 UTC


README

Build Status License

基于事件的PHP文件系统监视器。FsNotify完全基于异步和事件,使用AmpSymfony\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模型或静态资产目录更改时的典型要求。