CakeFest 2024: The Official CakePHP Conference

Класс EvStat

(PECL ev >= 0.2.0)

Введение

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

Путь не обязан существовать: изменение состояния с «путь существует» на «путь не существует» — это изменение состояния, как и любое другое. На условие «путь не существует» указывает значение 0 элемента с ключом 'nlink' в массиве, который возвращает метод 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

User Contributed Notes

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