Класс EvPeriodic
(PECL ev >= 0.2.0)
Введение
Периодические наблюдатели также, своего рода, таймеры, но гораздо более непостоянные.
В отличие от EvTimer , наблюдатели EvPeriodic базируются не на реальном времени (или относительном времени, физически прошедшем), а на "системном" (том, которое показывается на ваших часах). Разница в том, что такое время может идти быстрее или медленнее "реального", или вообще скакать, в момент перехода на зимнее/летнее время или просто ручного изменения времени.
Наблюдатель EvPeriodic можно сконфигурировать на
срабатывание после определенного времени. Например, если наблюдатель
EvPeriodic сконфигурирован сработать
"в 10 секунд"
(т.е.
EvLoop::now()
+
10.0
секунд по "системному" времени, а не через 10 секунд!)
и сразу после этого системное время сбросили на
первое Января прошлого года, то наблюдатель сработает
через год или больше, ровно в тот момент, когда системное время будет равно заданному.
В то время как EvTimer просто сработает через
10
секунд после запуска.
Также как и с таймерами, callback-функция гарантированно сработает после наступления необходимого времени. Если несколько таймеров будут готовы сработать в одной и той же итерации событийного цикла, то первыми сработают те, которые должны сработать раньше по времени. (это более не распространяется на ситуации, когда callback-фугкции рекурсивно вызывают EvLoop::run()).
Обзор классов
$offset
,
string
$interval
,
callable
$reschedule_cb
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
)$offset
,
float
$interval
,
callable
$reschedule_cb
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
) : EvPeriodicСвойства
- offset
-
При повторении этот параметр содержит значение смещения, в противном случае - абсолютное время (значение смещения передается в EvPeriodic::set() , хотя libev может его поменять для лучшей численной стабильности).
- interval
-
Текущее значение интервала. Может быть изменено в любое время, но изменения вступят в силу только после срабатывания наблюдателя, либо при вызове EvPeriodic::again().
Содержание
- EvPeriodic::again — Останавливает и снова запускает периодический наблюдатель
- EvPeriodic::at — Возвращает абсолютное время, когда наблюдатель запустится в следующий раз
- EvPeriodic::__construct — Конструктор объекта наблюдателя EvPeriodic
- EvPeriodic::createStopped — Создает остановленный наблюдатель EvPeriodic
- EvPeriodic::set — Настраивает наблюдателя