tsufeki/react-filesystem-monitor

基于 React PHP 的异步文件系统监控器

0.4.1 2019-01-22 19:22 UTC

This package is auto-updated.

Last update: 2024-08-29 05:03:42 UTC


README

基于 React PHP 的异步文件系统监控器。

目前有以下实现方式

  • INotifyProcessMonitor 基于 inotifywait 命令行工具,用于 Linux。
  • FsWatchProcessMonitor 基于 fswatch,用于 OSX。

所有实现的构造函数都接受两个参数:要监控的路径(文件或递归监控的目录)和可选的事件数组(默认为所有事件)。

可用事件

  • access 即读取
  • attribute - 权限、时间戳等的修改
  • 关闭
  • 创建
  • 删除
  • 修改
  • move_frommove_to - 文件移动,分别触发源路径和目标路径。只有针对监控目录内部路径的移动事件会被触发。
  • 打开

这些事件作为参数传递:触发事件的路径,一个布尔值指示路径是否是目录,事件名称和监控实例本身。

其他事件

  • all - 触发所有上述事件
  • start - 监控器完成设置后触发
  • 错误

请注意,并非所有后端都支持所有事件。 fswatch 不会触发 openclose 事件;此外,start 是在进程启动后立即触发,而不是在设置完成后。

示例

$loop = React\EventLoop\Factory::create();

$monitor = (new ReactFilesystemMonitor\FilesystemMonitorFactory())->create('foo/bar', ['modify', 'delete']);
$monitor->on('all', function ($path, $isDir, $event, $monitor) {
    echo sprintf("%s:  %s%s\n", $event, $path, $isDir ? ' [dir]' : '');
});
$monitor->start($loop);

$loop->run();