tsufeki / react-filesystem-monitor
Asynchronous filesystem monitor based on React PHP
Installs: 3 754
Dependents: 1
Suggesters: 0
Security: 0
Stars: 6
Watchers: 3
Forks: 0
Open Issues: 1
Requires
- php: >=7.0
- evenement/evenement: ^3.0 || ^2.0
- react/child-process: ^0.6 || ^0.5.2
- react/event-loop: ^1.0 || ^0.5 || ^0.4.3
- react/stream: ^1.0 || ^0.7
- tsufeki/react-line-stream: ^0.2.0
This package is auto-updated.
Last update: 2025-03-01 00:20:55 UTC
README
Asynchronous filesystem monitor based on React PHP.
Currently these implementations are available:
INotifyProcessMonitor
based oninotifywait
command line utility, used on Linux.FsWatchProcessMonitor
based onfswatch
, used on OSX.
All implementations' constructors take two arguments: a path to watch (file or recursively watched directory) and optional array of event to watch for (defaults to all events).
Available events:
access
i.e. readattribute
- modification of permissions, timestamps etc.close
create
delete
modify
move_from
,move_to
- file move, fired with source and destination path respectively. Only those for paths inside watched dir are fired.open
These events pass as arguments: path which triggered it, boolean indicating whether the path is a directory, event name and monitor instance itself.
Additional events:
all
- fired for all events abovestart
- fired when watchers finished setting uperror
Please note that not all backends support all events. fswatch
won't emit
open
and close
events; also start
is fired immediately after process starts
instead of when setup is complete.
Example
$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();