(PECL ev >= 0.2.0)
EvEmbed::__construct — 构造 EvEmbed 对象
$other
,$callback
= ?,$data
= ?,$priority
= ?这是一个相当高级的监视器类型,允许将一个事件循环嵌入到另一个事件循环中(目前仅支持在嵌入式循环中使用IO事件,其他类型的监视器可能会被延迟或错误地处理,并且不得使用)。
详情请参阅 » libev 文档。
此监视器在没有正常工作的kqueue
的*BSD*系统上最为有用,以便仍然能够处理大量的套接字。请参见下面的示例。
other
EvLoop 的实例。要嵌入的循环,此循环必须是可嵌入的(请参阅 Ev::embeddableBackends())。
callback
参见 监视器回调。
data
与监视器关联的自定义数据。
priority
示例 #1 将使用 kqueue 后端创建的循环嵌入到默认循环中
<?php
/*
* 检查kqueue是否可用,但不推荐,并创建一个kqueue后端
* 用于套接字(通常适用于任何kqueue实现)。
* 将仅kqueue/套接字的事件循环存储在loop_socket中。(也可以选择
* 使用EVFLAG_NOENV)
*
* 示例来自
* http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
*/
$loop = EvLoop::defaultLoop();
$socket_loop = NULL;
$embed = NULL;
if (Ev::supportedBackends() & ~Ev::recommendedBackends() & Ev::BACKEND_KQUEUE) {
if (($socket_loop = new EvLoop(Ev::BACKEND_KQUEUE))) {
$embed = new EvEmbed($loop);
}
}
if (!$socket_loop) {
$socket_loop = $loop;
}
// 现在将 $socket_loop 用于所有套接字,并将 $loop 用于其他任何内容
?>