Класс EvStat

(PECL ev >= 0.2.0)

Введение

EvStat наблюдает за изменением атрибутов объекта по заданному пути в файловой системе. Это достигается путем регулярного запуска stat() для этого пути (либо путем получения сигнала об изменении от операционной системы) и сравнение полученных данных с результатами предыдущего вызова. В случае обнаружения изменения атрибутов вызывается callback-функция.

Путь не обязательно должен существовать в действительности. Изменение статуса с "путь существует" на "путь не существует" - это такое же изменение, как и любое другое. Состояние "путь не существует" определяется по значению 'nlink' равным 0 (которое возвращается методом EvStat::attr()).

Путь не должен оканчиваться слешем или содержать специальные компоненты, такие как '.' или ... Путь должен быть абсолютным. Если задать относительный путь и сменить рабочий каталог, то поведение будет неопределенным.

Так как нет переносимого интерфейса оповещения об изменениях, переносимая реализация просто вызывает stat() через равные промежутки времени и смотрит, не изменилось ли чего. Поэтому рекомендуется задавать интервал опроса. Если интервал опроса задан равным 0.0 (что крайне рекомендуется), то будет использоваться значение по умолчанию (которого никто не знает, но предполагается, что где-то около 5 секунд, но при этом может динамически меняться). libev имеет ограничение на минимальное значение интервала, которое сейчас равно приблизительно 0.1, но такой интервал - это стрельба из пушки по воробьям.

Не рекомендуется использовать большое количество одновременно работающих наблюдателей EvStat, так как это может сильно повлиять на потребление ресурсов в связи с использованием механизмов оповещения операционной системы.

Обзор классов

EvStat extends EvWatcher {
/* Свойства */
public $path ;
public $interval ;
/* Наследуемые свойства */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* Методы */
public attr ( ) : array
public __construct ( string $path , float $interval , callable $callback , mixed $data = null , int $priority = 0 )
final public static createStopped ( string $path , float $interval , callable $callback , mixed $data = null , int $priority = 0 ) : void
public prev ( ) : void
public set ( string $path , float $interval ) : void
public stat ( ) : bool
/* Наследуемые методы */
public EvWatcher::clear ( ) : int
abstract public EvWatcher::__construct ( )
public EvWatcher::feed ( int $revents ) : void
public EvWatcher::invoke ( int $revents ) : void
public EvWatcher::keepalive ( bool $value = ? ) : bool
public EvWatcher::setCallback ( callable $callback ) : void
public EvWatcher::start ( ) : void
public EvWatcher::stop ( ) : void
}

Свойства

interval

Только чтение. Показывает, насколько часто происходят опросы статуса и обычно равно 0.0, что позволяет libev самостоятельно определять интервал.

path

Только чтение. Путь, для которого отслеживаются изменения.

Содержание

  • EvStat::attr — Возвращает значения, недавно обнаруженные Ev
  • EvStat::__construct — Создает объект наблюдателя EvStat
  • EvStat::createStopped — Создает остановленный объект наблюдателя EvStat
  • EvStat::prev — Возвращает предыдущий набор значений, возвращаемых EvStat::attr
  • EvStat::set — Настраивает наблюдателя
  • EvStat::stat — Инициирует вызов статистики