Класс EvStat

(PECL ev >= 0.2.0)

Введение

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

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

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

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

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

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

class EvStat extends EvWatcher {
/* Свойства */
public $path;
public $interval;
/* Наследуемые свойства */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Методы */
public __construct(
     string $path ,
     float $interval ,
     callable $callback ,
     mixed $data = null ,
     int $priority = 0
)
public attr(): array
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::feed( int $revents ): void
public EvWatcher::invoke( int $revents ): void
public EvWatcher::keepalive( bool $value = ?): bool
public EvWatcher::setCallback( callable $callback ): void
}

Свойства

interval

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

path

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

Содержание

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

User Contributed Notes

There are no user contributed notes for this page.
To Top