Watchers (观察者)

观察者是为了记录某件事而创造的对象。例如,下面的代码等待STDIN成为可读的:

<?php
// Wait until STDIN is readable
// 等待直到STDIN可读
$w = new EvIo(STDIN, Ev::READ, function ($watcher, $revents) {
 echo "STDIN is readable\n";
});
Ev::run(Ev::RUN_ONCE);
?>

所有观察者构造函数会自动启动观察者。createStopped方法创建停止监视器(例如 EvIo::createStopped())

注意,当观察者对象被破坏时,观察者会自动停止。因此,应该保留由构造函数或工厂方法返回的观察者对象

还要注意的是,所有改变watcher属性(set,priority 等)的方法都会自动停止并在激活时再次启动,这意味着挂起的事件会丢失。

参见: Watcher callbacks.

Watcher callbacks (观察者回调)

所有监视器可以是活动的(等待事件)或不活动的(暂停)。只有活动的观察者才会调用它们的回调。所有回调都会被调用(至少有两个参数):watcher: 观察者,和revents: 接收时间的位掩码。

观察者回调传递给观察者构造函数(派生于EvWatcher - EvCheck::__construct() , EvChild::__construct()的类 等)。观察者回调应该匹配以下原型:

void callback ([ object $watcher = NULL [, int $revents = NULL ]] )

watcher (观察者实例)
The watcher instance(of a class extending EvWatcher ).

revents (观察者接收的事件集)
Watcher received events.

每个监视者类型都有相关的revents位掩码,因此可以对多个观察者使用相同的回调。事件掩码是在类型之后命名的,即 EvChild (or EvLoop::child() ), 设置 EV::CHILD , EvPrepare (or EvLoop::prepare() ) 设置 Ev::PREPARE , EvPeriodic (or EvLoop::periodic() ) sets Ev::PERIODIC等等,除了I/O事件之外(它可以同时设置Ev::READ 和 Ev::WRITE bits)


Object
2.8k 声望235 粉丝

域名代售,需要私信