Класс EvStat

(PECL ev >= 0.2.0)

Введение

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

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

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

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

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

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

classEvStatextendsEvWatcher {
public$path;
public$interval;
public$is_active;
public$data;
public$priority;
public__construct(
    string$path,
    float$interval,
    callable$callback,
    mixed$data = null,
    int$priority = 0
)
publicattr(): array
finalpublicstaticcreateStopped(
    string$path,
    float$interval,
    callable$callback,
    mixed$data = null,
    int$priority = 0
): void
publicprev(): void
publicset(string$path, float$interval): void
publicstat(): bool
publicEvWatcher::feed(int$revents): void
publicEvWatcher::invoke(int$revents): void
publicEvWatcher::keepalive(bool$value = ?): bool
}

Свойства

interval

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

path

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

Содержание

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