(PECL event >= 1.2.6-beta)
表示 Libevent 的缓冲区事件。
通常,应用程序除了响应事件之外,还希望执行一定数量的数据缓冲。例如,当我们想要写入数据时,通常的模式如下所示
决定我们要将一些数据写入连接;将这些数据放入缓冲区。
等待连接变为可写
写入尽可能多的数据
记住我们写了多少,如果我们还有更多数据要写,则等待连接再次变为可写。
这种缓冲 I/O 模式非常常见,因此 Libevent 为其提供了一种通用机制。“缓冲区事件”由底层传输(如套接字)、读取缓冲区和写入缓冲区组成。缓冲区事件不会像常规事件那样在底层传输准备好读取或写入时提供回调,而是在读取或写入足够数据时调用其用户提供的回调。
$dns_base
,$hostname
,$port
,$family
= EventUtil::AF_UNSPEC$base
,$socket
= null
,$options
= 0,$readcb
= null
,$writecb
= null
,$eventcb
= null
,$arg
= null
$base
,$underlying
,$ctx
,$state
,$options
= 0$base
,$socket
,$ctx
,$state
,$options
= ?与缓冲事件关联的数字文件描述符。通常表示已绑定的套接字。如果缓冲事件没有关联的文件描述符(套接字),则等于 **null
**。
用于实现缓冲事件的事件的优先级。
底层输入缓冲区对象(EventBuffer)
底层输出缓冲区对象(EventBuffer)
EventBufferEvent::READING
在缓冲事件的读取操作期间发生事件。请参阅其他标志,以了解它是哪个事件。
EventBufferEvent::WRITING
在缓冲事件的写入操作期间发生事件。请参阅其他标志,以了解它是哪个事件。
EventBufferEvent::EOF
在缓冲事件上收到文件结束指示。
EventBufferEvent::ERROR
缓冲事件操作期间发生错误。有关错误是什么的更多信息,请调用 EventUtil::getLastSocketErrno() 和/或 EventUtil::getLastSocketError() 。
EventBufferEvent::TIMEOUT
EventBufferEvent::CONNECTED
在缓冲事件上完成请求的连接。
EventBufferEvent::OPT_CLOSE_ON_FREE
释放缓冲事件时,关闭底层传输。这将关闭底层套接字,释放底层缓冲事件等。
EventBufferEvent::OPT_THREADSAFE
自动为缓冲事件分配锁,以便可以从多个线程安全地使用它。
EventBufferEvent::OPT_DEFER_CALLBACKS
设置此标志时,缓冲事件将延迟其所有回调。请参阅 » 使用 Libevent 进行快速可移植的非阻塞网络编程,延迟回调 。
EventBufferEvent::OPT_UNLOCK_CALLBACKS
默认情况下,当缓冲事件被设置为线程安全时,在调用任何用户提供的回调时都会保持缓冲事件的锁。设置此选项会使 Libevent 在调用回调时释放缓冲事件的锁。
EventBufferEvent::SSL_OPEN
SSL 握手完成
EventBufferEvent::SSL_CONNECTING
SSL 当前正在作为客户端执行协商
EventBufferEvent::SSL_ACCEPTING
SSL 当前正在作为服务器执行协商