seregazhuk / reactphp-fswatch
用于通过fswatch和ReactPHP监控文件变化的库
v0.1.0
2020-05-18 09:27 UTC
Requires
- php: ^7.4
- evenement/evenement: ^3.0
- react/child-process: ^0.6.1
- react/event-loop: ^1.1
Requires (Dev)
- clue/block-react: ^1.3
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-15 05:54:59 UTC
README
目录
安装
该库需要 fswatch - 一个跨平台的文件变更监控工具,支持多个环境。
您可以使用以下方式安装此包
composer global seregazhuk/reactphp-fswatch
使用方法
首先,您创建一个 watcher 对象,提供一个循环和您将要运行的fswatch命令。例如,如果您想监听 src
目录内的变化
$loop = \React\EventLoop\Factory::create(); $watcher = new \Seregazhuk\ReactFsWatch\FsWatch('src', $loop,); $watcher->run(); $loop->run();
一旦目录中发生变更,监视器将触发包含 Change
对象实例的 change
事件。要检测变化,您可以监听此事件并处理事件对象
$watcher->on( 'change', static function (Change $event) { $type = $event->isFile() ? 'File' : 'Dir'; echo $type . ': ' . $event->file() . ' was changed' . PHP_EOL; } );
此外,您还可以使用辅助方法 onChange
$watcher->onChange($callable);
要停止监听文件系统,请使用方法 stop()
$watcher->stop();
文件系统变化
每次变化您都会收到一个包含关于文件系统中发生事件的详细信息的 Change
对象。它具有以下辅助方法来检查变化
file()
- 发生变化的文件名或目录。isFile()
- 是否有文件发生变化。isDir()
- 是否有目录发生变化。isSymbolicLink
- 是否有符号链接发生变化。isLink()
- 链接对象的数量已更改。noOp()
- 未检测到任何变化。attributeModified()
- 对象的属性已更改。ownerModified()
- 对象的所有者已更改。created()
- 对象已被创建。removed()
- 对象已被删除。renamed()
- 对象已被重命名。updated()
- 对象已被更新。