PHP的Ev教程二(watcher和watche回调等)

Watchers (观察者)

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

<?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())函数

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

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

参见: 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)it

相关文章
相关标签/搜索