(PECL event >= 1.2.6-beta)
表示 Libevent 的緩衝事件。
應用程式通常除了回應事件之外,還需要執行一些資料緩衝。例如,當我們想要寫入資料時,通常的模式如下所示
決定要將一些資料寫入連線;將該資料放入緩衝區。
等待連線變成可寫入狀態
盡可能寫入更多資料
記住我們寫入了多少資料,如果還有更多資料要寫入,則等待連線再次變成可寫入狀態。
這種緩衝 I/O 模式相當常見,Libevent 為此提供了一種通用機制。「緩衝事件」由底層傳輸機制(例如 socket)、讀取緩衝區和寫入緩衝區組成。不同於常規事件在底層傳輸機制可供讀寫時才給出回呼,緩衝事件在讀取或寫入足夠的數據時才會調用使用者提供的回呼函式。
$base
,$socket
= 空值
,$options
= 0,$readcb
= 空值
,$writecb
= 空值
,$eventcb
= 空值
,$arg
= 空值
$base
,$underlying
,$ctx
,$state
,$options
= 0$base
,$socket
,$ctx
,$state
,$options
= ?與緩衝區事件關聯的數字檔案描述符。通常代表一個綁定的socket。如果沒有檔案描述符(socket)與緩衝區事件關聯,則等於 null
。
用於實現緩衝區事件的事件的優先級。
底層輸入緩衝區物件( EventBuffer )
底層輸出緩衝區物件( EventBuffer )
EventBufferEvent::READING (讀取中)
在 bufferevent 的讀取操作期間發生事件。有關發生的事件,請參閱其他標誌。
EventBufferEvent::WRITING (寫入中)
在 bufferevent 的寫入操作期間發生事件。有關發生的事件,請參閱其他標誌。
EventBufferEvent::EOF (檔案結尾)
在緩衝區事件上收到檔案結尾指示。
EventBufferEvent::ERROR (錯誤)
在 bufferevent 操作期間發生錯誤。有關錯誤的更多資訊,請呼叫 EventUtil::getLastSocketErrno() 和/或 EventUtil::getLastSocketError()。
EventBufferEvent::TIMEOUT (逾時)
EventBufferEvent::CONNECTED (已連線)
在 bufferevent 上完成請求的連線。
EventBufferEvent::OPT_CLOSE_ON_FREE (釋放時關閉)
釋放緩衝區事件時,關閉底層傳輸。這將關閉底層 socket,釋放底層緩衝區事件等。
EventBufferEvent::OPT_THREADSAFE (執行緒安全)
自動配置 bufferevent 的鎖,以便從多個線程安全地使用。
EventBufferEvent::OPT_DEFER_CALLBACKS
設定此標誌時,bufferevent 會延遲所有回呼。詳見 » 使用 Libevent 進行快速可移植的非阻塞式網路程式設計,延遲回呼。
EventBufferEvent::OPT_UNLOCK_CALLBACKS
預設情況下,當 bufferevent 設定為線程安全時,只要呼叫任何使用者提供的回呼,就會鎖定緩衝事件的鎖。設定此選項會使 Libevent 在呼叫回呼時釋放緩衝事件的鎖。
EventBufferEvent::SSL_OPEN
SSL 握手已完成
EventBufferEvent::SSL_CONNECTING
SSL 目前正以用戶端身分執行協商
EventBufferEvent::SSL_ACCEPTING
SSL 目前正以伺服器身分執行協商