Клас 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::clear(): int
public
EvWatcher::feed(
int
$revents
): void
public
EvWatcher::getLoop(): EvLoop
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 - Ініціює виклик статистики