(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 当前正在以服务器身份执行协商