函式名:EventBase::dispatch()
適用版本:EventBase (PECL event >= 1.2.6-beta)
用法:EventBase::dispatch() 函式用於立即分派(dispatch)所有已經被註冊的事件,並在當前執行緒中執行它們的回撥函式。該函式將對所有的事件進行遍歷,並按照其優先順序執行回撥函式。
示例:
// 建立一個 EventBase 物件
$base = new EventBase();
// 建立一個定時事件
$timerEvent = Event::timer($base, function() {
echo "定時事件觸發\n";
});
// 設定定時事件觸發的時間間隔為1秒
$timerEvent->add(1);
// 註冊一個訊號事件,當接收到 SIGINT 訊號時觸發
$signalEvent = Event::signal($base, SIGINT, function() use ($base) {
echo "接收到 SIGINT 訊號\n";
// 停止事件迴圈
$base->stop();
});
// 將所有事件分派執行
$base->dispatch();
// 清除事件資源
$timerEvent->free();
$signalEvent->free();
注意:呼叫 EventBase::dispatch() 會阻塞當前執行緒,直到事件迴圈結束或者被呼叫 EventBase::stop() 函式停止。在進行事件分派前,必須透過呼叫 EventBase::loop() 或 EventBase::loopExit() 函式之一,開啟事件迴圈,否則事件將不被執行。事件迴圈會迴圈執行事件,直到被顯式停止。