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)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。