Класс EvPeriodic

(PECL ev >= 0.2.0)

Введение

Периодические наблюдатели также, своего рода, таймеры, но гораздо более непостоянные.

В отличии от EvTimer , наблюдатели EvPeriodic базируются не на реальном времени (или относительном времени, физически прошедшем), а на "системном" (том, которое показывается на ваших часах). Разница в том, что такое время может идти быстрее или медленнее "реального", или вообще скакать, в момент перехода на зимнее/летнее время или просто ручного изменения времени.

Наблюдатель EvPeriodicможно сконфигурировть на срабатывание после определенного времени. Например, если наблюдатель EvPeriodic сконфигурировн сработать "in 10 seconds" (т.е. EvLoop::now() + 10.0 секунд по "системному" времени, а не через 10 секунд!) и сразу после этого системное время сбросили на первое Января прошлого года, то наблюдатель сработает через год с прицепом, ровно в тот момент, когда системное время будет равно заданному. В то время как EvTimer просто сработает через 10 секунд после запуска.

Также как и с таймерами, callback-функция гарантированно сработает после наступления необходимого времени. Если несколько таймеров будут готовы сработать в одной и той же итерации событийного цикла, то первыми сработают те, которые должны сработать раньше по времени. (это более не распространяется на ситуации, когда callback-фугкции рекурсивно вызывают EvLoop::run()).

Обзор классов

EvPeriodic extends EvWatcher {
/* Свойства */
public $offset ;
public $interval ;
/* Наследуемые свойства */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* Методы */
public void again ( void )
public double at ( void )
public __construct ( double $offset , string $interval , callable $reschedule_cb , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public static EvPeriodic createStopped ( double $offset , double $interval , callable $reschedule_cb , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void set ( double $offset , double $interval )
/* Наследуемые методы */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

Свойства

offset

При повторении этот параметр содержит значение смещения, в противном случае - абсолютное время (значение смещения передается в EvPeriodic::set() , хотя libev может его поменять для лучшей численной стабильности).

interval

Текущее значение интервала. Может быть изменено в любое время, но изменения вступят в силу только после срабатывания наблюдателя, либо при вызове EvPeriodic::again().

Содержание

add a note add a note

User Contributed Notes

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