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

相關文章
相關標籤/搜索