azjezz / assess
Unix filesystem notification library for PHP
Installs: 1 801
Dependents: 1
Suggesters: 0
Security: 0
Stars: 105
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^8.3
- amphp/amp: ^3.0
- amphp/file: ^3.1
- revolt/event-loop: ^1.0
Requires (Dev)
- ext-pcntl: *
README
Unix filesystem notifications library for PHP.
Features
- Watch for file creations, modifications, accesses, changes, moves, and deletions.
- Configurable polling interval.
- Filter by file extensions.
- Optionally watch directories.
- Easy-to-use event registration.
Installation
You can install the library via Composer:
composer require azjezz/assess
Usage
use Assess\Configuration; use Assess\Event\Event; use Assess\Event\EventType; use Assess\Watcher; use Revolt\EventLoop; $configuration = Configuration::createForDirectories([ '/path/to/directory', '/another/path/to/directory', ]) // poll interval in seconds ->withPollInterval(0.5) // do not watch directories ->withWatchDirectories(false) // include only PHP files ->withExtensions(['php']) ; $watcher = Watcher::create($configuration); $watcher->register(EventType::Created, function (Event $event): void { $node = $event->newIndex->nodes[$event->id]; echo "File created: {$node->path}\n"; }); $watcher->register(EventType::Moved, function (Event $event): void { $oldNode = $event->oldIndex->nodes[$event->id]; $newNode = $event->newIndex->nodes[$event->id]; echo "File moved: {$oldNode->path} -> {$newNode->path}\n"; }); $watcher->register(EventType::Deleted, function (Event $event): void { $node = $event->oldIndex->nodes[$event->id]; echo "File deleted: {$node->path}\n"; }); $watcher->enable(); $watcher->reference(); EventLoop::run();
See examples/command.php for a complete example.
License
This library is licensed under the MIT license. See the LICENSE file for details.