Клас EvPeriodic
(PECL ev >= 0.2.0)
Вступ
Періодичні спостерігачі також, свого роду, таймери, але набагато непостійніші.
В отличие отEvTimer , спостерігачі EvPeriodic базуються не на реальному часі (або відносному часі, що фізично пройшов), а на "системному" (тому, що показується на вашому годиннику). Різниця в тому, що такий час може йти швидше або повільніше "реального", або взагалі стрибати, у момент переходу на зимовий/літній час або просто ручної зміни часу.
Спостерігач EvPeriodic можна налаштувати на спрацювання після певного часу. Наприклад, якщо спостерігач EvPeriodic налаштований спрацювати "в 10 секунд"(т.еEvLoop::now() 10.0
секунд за "системним" часом, а не через 10 секунд!) і відразу після цього системний час скинули на перше січня минулого року, то спостерігач спрацює через рік або більше, рівно в той момент, коли системний час дорівнюватиме заданому. В той час як EvTimer просто спрацює через **10
**секунд после запуска.
Як і з таймерами, callback-функція гарантовано спрацює після настання необхідного часу. Якщо кілька таймерів будуть готові спрацювати в одній і тій самій ітерації подієвого циклу, то першими спрацюють ті, які повинні працювати раніше за часом. (Це більше не поширюється на ситуації, коли callback-функції рекурсивно викликають EvLoop::run()
Огляд класів
class EvPeriodic
extends
EvWatcher
{
/* Свойства */
public
$offset;
public
$interval;
/* Наследуемые свойства */
public
$is_active;
public
$data;
public
$is_pending;
public
$priority;
/* Методы */
public
__construct(
float
$offset
,
string
$interval
,
callable
$reschedule_cb
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
)
public
again(): void
public
at(): float
final
public
static
createStopped(
float
$offset
,
float
$interval
,
callable
$reschedule_cb
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
): EvPeriodic
public
set(
float
$offset
,
float
$interval
): void
/* Наследуемые методы */
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
}
Властивості
offset
При повторенні цей параметр містить значення зсуву, інакше - абсолютний час (значення зсуву передається в EvPeriodic::set(), хотяlibev може його змінити для кращої чисельної стабільності).
interval
Поточне значення інтервалу. Може бути змінено в будь-який час, але зміни набудуть чинності тільки після спрацювання спостерігача або під час виклику EvPeriodic::again()
Зміст
- EvPeriodic::again— Зупиняє та знову запускає періодичний спостерігач
- EvPeriodic::at— Повертає абсолютний час, коли спостерігач запуститься наступного разу
- EvPeriodic::__construct - Конструктор об'єкта спостерігача EvPeriodic
- EvPeriodic::createStopped - Створює зупинений спостерігач EvPeriodic
- EvPeriodic::set— Налаштовує спостерігача