seregazhuk/reactphp-fswatch

Library for monitoring file changes with fswatch and ReactPHP

v0.1.0 2020-05-18 09:27 UTC

This package is auto-updated.

Last update: 2022-05-15 00:51:05 UTC


README

PHP Version Build Status Total Downloads

Latest Stable Version Latest Version Latest Unstable Version

License

Table of contents

Installation

Library requires fswatch - a cross-platform file change monitor with multiple environments.

You can install this package like this:

composer global seregazhuk/reactphp-fswatch

Usage

First of all, you create a watcher object providing a loop and fswatch command that you are going to run. For example if you want to listen to changes inside src directory:

$loop = \React\EventLoop\Factory::create();
$watcher = new \Seregazhuk\ReactFsWatch\FsWatch('src', $loop,);
$watcher->run();

$loop->run();

Once there are changes in the directory the watcher fires change event that contains an instance of Change object. To detect change you can listen to this event and handle the event object:

$watcher->on(
    'change',
    static function (Change $event) {
        $type = $event->isFile() ? 'File' : 'Dir';
        echo $type . ': ' . $event->file() . ' was changed' . PHP_EOL;
    }
);

Also, you can use a helper method onChange:

$watcher->onChange($callable);

To stop listening for filesytem use method stop():

$watcher->stop();

Filesystem Changes

On every change you receive Change object that contains different details about an event that happened in the filesystem. It has the following helper methods to examine the change:

  • file() - filename or a directory that has changed.
  • isFile() - whether a file was changed or not.
  • isDir() - whether a directory was changed or not.
  • isSymbolicLink - whether a symbolic link was changed or not.
  • isLink() - the object link count has changed.
  • noOp() - no changed were detected.
  • attributeModified() - the object’s attribute has changed.
  • ownerModified() - the object’s owner has changed.
  • created() - the object has been created.
  • removed() - the object has been removed.
  • renamed() - the object has been renamed.
  • updated() - the object has been updated.

License

MIT http://rem.mit-license.org