查詢

EventBase::dispatch()函式—用法及示例

「 立即分派(dispatch)所有已經被註冊的事件,並在當前執行緒中執行它們的回撥函式 」


函式名: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() 函式之一,開啟事件迴圈,否則事件將不被執行。事件迴圈會迴圈執行事件,直到被顯式停止。

補充糾錯
上一個函式: Event::__construct()函式
下一個函式: EventBase::exit()函式
熱門PHP函式
分享連結