(PECL ev >= 0.2.0)
Периодические наблюдатели также, своего рода, таймеры, но гораздо более непостоянные.
В отличие от EvTimer, наблюдатели EvPeriodic базируются не на реальном времени (или относительном времени, физически прошедшем), а на «системном» (том, которое показывается на ваших часах). Разница в том, что такое время может идти быстрее или медленнее «реального», или вообще скакать, в момент перехода на зимнее или летнее время или просто ручного изменения времени.
Наблюдатель EvPeriodic можно сконфигурировать на
срабатывание после конкретного времени. Например, если наблюдатель
EvPeriodic сконфигурирован сработать
«через 10 секунд»
(т. е. EvLoop::now() + 10.0 секунд по «системному» времени, а не через 10 секунд!)
и сразу после этого системное время сбросили на
первое января прошлого года, то наблюдатель сработает
через год или больше, ровно в тот момент, когда системное время будет равно заданному.
В то время как EvTimer просто сработает через
10 секунд после запуска.
Также как и с таймерами, callback-функция гарантированно сработает после наступления необходимого времени. Если несколько таймеров будут готовы сработать в одной и той же итерации событийного цикла, то первыми сработают те, которые должны сработать раньше по времени. (это более не распространяется на ситуации, когда callback-функции рекурсивно вызывают EvLoop::run()).
$offset
,$interval
,$reschedule_cb
,$callback
,$data
= null
,$priority
= 0
$offset
,$interval
,$reschedule_cb
,$callback
,$data
= null
,$priority
= 0