PHP Conference Japan 2024

EventBase 類別

(PECL event >= 1.2.6-beta)

簡介

EventBase 類別代表 libevent 的事件基礎結構。它持有一組事件,並且可以輪詢以確定哪些事件處於活動狀態。

每個事件基礎都有一個用於確定哪些事件已準備好的 _方法_ 或 _後端_。辨識的方法有:selectpollepollkqueuedevpollevportwin32

要設定要使用的事件基礎,或者要避免使用特定的後端,可以使用 EventConfig 類別。

警告

只要尚未釋放關聯 Event 物件的資源,就 _不要_ 銷毀 EventBase 物件。否則,將會導致無法預測的結果!

類別概要

final class EventBase {
/* 常數 */
常數 int LOOP_ONCE = 1;
常數 int LOOP_NONBLOCK = 2;
常數 int NOLOCK = 1;
常數 int STARTUP_IOCP = 4;
常數 int NO_CACHE_TIME = 8;
/* 方法 */
公開 __construct( 事件設定 $cfg = ?)
公開 dispatch(): void
公開 exit( 浮點數 $timeout = ?): 布林值
公開 free(): void
公開 getMethod(): 字串
公開 gotExit(): 布林值
公開 gotStop(): 布林值
公開 loop( 整數 $flags = ?): 布林值
公開 priorityInit( 整數 $n_priorities ): 布林值
公開 reInit(): 布林值
公開 stop(): 布林值
}

預定義常數

EventBase::LOOP_ONCE

EventBase::loop() 方法一起使用的旗標,表示:「阻塞直到 libevent 有一個活動事件,然後在所有活動事件的回呼都執行完畢後退出」。

EventBase::LOOP_NONBLOCK

EventBase::loop() 方法一起使用的旗標,表示:「不要阻塞:查看現在哪些事件已準備好,執行最高優先級事件的回呼,然後退出」。

EventBase::NOLOCK

配置旗標。即使我們已設定鎖定,也不要為事件基礎配置鎖定。

EventBase::STARTUP_IOCP

僅限 Windows 的配置旗標。在啟動時啟用 IOCP 調度器。

EventBase::NO_CACHE_TIME

配置旗標。不要在每次事件迴圈準備好執行逾時回呼時都檢查目前時間,而是在每個逾時回呼之後檢查。

EventBase::EPOLL_USE_CHANGELIST

如果我們使用 epoll 後端,這個旗標表示可以使用 Libevent 的內部變更列表程式碼來批次處理新增和刪除,以盡可能減少系統呼叫的次數。

設定此旗標可以使程式碼執行得更快,但它可能會觸發 Linux 錯誤:如果任何檔案描述符被 dup() 或其變體複製,則使用此旗標是不安全的。這樣做會產生奇怪且難以診斷的錯誤。

也可以透過設定 EVENT_EPOLL_USE_CHANGELIST 環境變數來啟用此旗標。

如果最終使用 epoll 以外的後端,則此旗標無效。

目錄

新增註釋

使用者貢獻的註釋

此頁面尚無使用者提供的註釋。
To Top