2024 日本 PHP 研討會

EvPrepare 類別

(PECL ev >= 0.2.0)

簡介

EvPrepareEvCheck 觀察器通常成對使用。 EvPrepare 觀察器在行程阻塞之前被呼叫,EvCheck 則在之後被呼叫。

不允許從 EvPrepareEvCheck 觀察器中呼叫 EvLoop::run() 或其他進入當前事件迴圈的類似方法或函式。然而,呼叫其他非當前事件迴圈則是可以的。其背後的原因是,在這些觀察器中不需要檢查遞迴,也就是說,順序將始終是:EvPrepare -> 阻塞 -> EvCheck,因此,若有每種類型的一個觀察器,它們將始終成對呼叫,將阻塞呼叫括起來。

主要目的是將其他事件機制整合到 *libev* 中,它們的使用方式有些進階。例如,它們可以用於追蹤變數變化、實作自定義觀察器、整合 net-snmp 或協程庫等等。它們偶爾也可用於快取一些資料,並希望在阻塞之前將其清空。

建議賦予 EvCheck 觀察器最高優先級 (Ev::MAXPRI),以確保它們在輪詢後在任何其他觀察器之前運行(這對 EvPrepare 觀察器無關緊要)。

此外,EvCheck 觀察器不應觸發/饋送事件。雖然 *libev* 完全支援此功能,但它們可能會在其他 EvCheck 觀察器完成其工作之前執行。

類別概要

class EvPrepare extends EvWatcher {
/* 繼承的屬性 */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* 方法 */
public __construct( 字串 $callback , 字串 $data = ?, 字串 $priority = ?)
final public static createStopped( 可呼叫 $callback , 混合 $data = null , 整數 $priority = 0 ): EvPrepare
/* 繼承的方法 */
public EvWatcher::feed( 整數 $revents ): void
公開 EvWatcher::invoke( int $revents ): void
公開 EvWatcher::keepalive( bool $value = ?): bool
公開 EvWatcher::setCallback( 可呼叫 $callback ): void
公開 EvWatcher::stop(): void
}

目錄

新增註記

使用者貢獻的註記

此頁面沒有使用者貢獻的註記。
To Top