PHP Conference Japan 2024

Event 類別

(PECL event >= 1.2.6-beta)

簡介

Event 類別表示檔案描述子準備好讀取或寫入時觸發的事件;檔案描述子變為可讀取或寫入狀態(僅限邊緣觸發 I/O);逾時到期;發生信號;使用者觸發的事件。

每個事件都與一個 EventBase 物件關聯。然而,事件在被*加入*之前(透過 Event::add() 方法)並不會觸發。一個已加入的事件會維持在*待處理*狀態,直到註冊的事件發生,才會轉變為*作用中*狀態。為了處理事件,使用者可以註冊一個回呼函式,當事件變為作用中時,該函式就會被呼叫。如果事件被設定為*持續性*,它會保持在待處理狀態。如果不是持續性的,則在回呼函式執行後,它會停止待處理狀態。Event::del() 方法會*刪除*事件,使其不再處於待處理狀態。透過 Event::add() 方法可以再次加入該事件。

類別概要

final class Event {
/* 常數 */
const int ET = 32;
const int PERSIST = 16;
const int READ = 2;
const int WRITE = 4;
const int SIGNAL = 8;
const int TIMEOUT = 1;
/* 屬性 */
public readonly bool $pending;
/* 方法 */
public add( float $timeout = ?): bool
public __construct(
     EventBase $base,
     mixed $fd,
     int $what,
     callable $cb,
     mixed $arg = NULL
)
public del(): bool
public free(): void
public static getSupportedMethods(): array
公開 pending( 整數 $flags ): 布林
公開 set(
     EventBase $base,
     mixed $fd,
     整數 $what = ?,
     可呼叫 $cb = ?,
     混合 $arg = ?
): 布林
公開 setPriority( 整數 $priority ): 布林
公開 setTimer( 事件基底 $base , 可呼叫 $cb , 混合 $arg = ?): 布林
公開 靜態 signal(
     EventBase $base,
     整數 $signum,
     callable $cb,
     混合 $arg = ?
): 事件
公開 靜態 timer( 事件基底 $base , 可呼叫 $cb , 混合 $arg = ?): 事件
}

屬性

pending

事件是否待決。詳見 關於事件持續性

預定義常數

Event::ET

表示如果底層事件基底後端支援邊緣觸發事件,則事件應為邊緣觸發。這會影響 Event::READEvent::WRITE 的語義。

Event::PERSIST

表示事件是持續性的。詳見 關於事件持續性

Event::READ

此旗標表示當提供的檔案描述符(通常是串流資源或通訊端)可供讀取時,事件將變為作用中。

Event::WRITE

此旗標表示當提供的檔案描述符(通常是串流資源或通訊端)可供讀取時,事件將變為作用中。

Event::SIGNAL

用於實現訊號偵測。詳見下方的「建構訊號事件」。

Event::TIMEOUT

此旗標表示在逾時到期後變為作用中的事件。

建構事件時,會忽略 Event::TIMEOUT 旗標:可以在*新增*事件時設定逾時,或是不設定。當發生逾時時,它會在回呼函式的 $what 參數中設定。

目錄

新增註記

使用者提供的註記

此頁面沒有使用者提供的註記。
To Top