(PECL ev >= 0.2.0)
EvStat наблюдает за изменением атрибутов объекта по заданному пути в файловой системе. Это достигается путём регулярного запуска stat() для этого пути (либо путём получения сигнала об изменении от операционной системы) и сравнение полученных данных с результатами предыдущего вызова. В случае обнаружения изменения атрибутов вызывается callback-функция.
Путь не обязательно должен существовать в действительности. Изменение
статуса с "путь существует" на "путь не существует" - это такое же изменение,
как и любое другое. Состояние "путь не существует" определяется по значению
'nlink'
равным 0 (которое возвращается методом
EvStat::attr()).
Путь не должен оканчиваться слешем или содержать специальные
компоненты, такие как '.'
или
..
.
Путь должен быть абсолютным. Если задать относительный путь и сменить
рабочий каталог, то поведение будет неопределённым.
Так как нет переносимого интерфейса оповещения об изменениях,
переносимая реализация просто вызывает stat()
через равные промежутки времени и смотрит, не изменилось ли чего.
Поэтому рекомендуется задавать интервал опроса. Если интервал
опроса задан равным 0.0
(что крайне рекомендуется),
то будет использоваться значение по умолчанию (которого никто не знает, но
предполагается, что где-то около 5 секунд, но при этом может динамически
меняться).
libev имеет ограничение на минимальное значение
интервала, которое сейчас равно приблизительно 0.1
,
но такой интервал - это стрельба из пушки по воробьям.
Не рекомендуется использовать большое количество одновременно работающих наблюдателей EvStat, так как это может сильно повлиять на потребление ресурсов в связи с использованием механизмов оповещения операционной системы.
$path
,$interval
,$callback
,$data
= null
,$priority
= 0
$path
,$interval
,$callback
,$data
= null
,$priority
= 0
Только чтение.
Показывает, насколько часто происходят опросы статуса и обычно равно
0.0
, что позволяет
libev самостоятельно определять интервал.
Только чтение. Путь, для которого отслеживаются изменения.