EvPeriodic 类

(PECL ev >= 0.2.0)

简介

周期性观察者也是一种定时器,但它们非常通用。

EvTimer 不同,EvPeriodic 观察者不是基于实时(或相对时间,经过的物理时间),而是基于挂钟时间(绝对时间,日历或时钟)。区别在于挂钟时间可以比实时快或慢,时间跳跃并不少见(例如,当调整它时)。

EvPeriodic 观察者可以配置为在某个特定时间点触发。例如,如果一个 EvPeriodic 观察者被配置为在“10 秒后” 触发(例如 EvLoop::now() + 10.0 ,即绝对时间,而不是延迟),并且系统时钟被重置为上一年的一月,那么它将需要一年的时间或更长时间才能触发事件(与 EvTimer 不同,它仍然会在启动后大约 10 秒触发,因为它使用的是相对超时)。

与定时器一样,回调仅在它应该触发的时刻过去时才保证被调用。如果多个定时器在同一个循环迭代期间变得就绪,那么具有较早超时值的定时器将在具有较晚超时值的定时器之前被调用(但这不再适用于回调递归调用 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::feed( int $revents ): void
public EvWatcher::invoke( int $revents ): void
public EvWatcher::keepalive( bool $value = ?): bool
public EvWatcher::setCallback( callable $callback ): void
}

属性

offset

重复时,此属性包含偏移值,否则为绝对时间点(传递给 EvPeriodic::set() 的偏移值,尽管libev 可能会为了更好的数值稳定性而修改此值)。

interval

当前间隔值。可以随时修改,但更改仅在周期性定时器触发或调用 EvPeriodic::again() 时生效。

目录

添加说明

用户贡献说明

此页面没有用户贡献的说明。
To Top