(PECL ev >= 0.2.0)
EvEmbed::__construct — Construye un objeto EvEmbed
$other
,$callback
= ?,$data
= ?,$priority
= ?Se trata de un tipo de watcher avanzado que permite integrar un bucle de eventos en otro (actualmente, solo los eventos IO son soportados en el bucle interno, otros tipos de watcher no deben ser utilizados).
Ver la » documentación libev para más detalles.
Este watcher es más útil en sistemas
BSD donde kqueue
no es utilizado,
para poder manejar un gran número de sockets. Ver el ejemplo a continuación.
other
Una instancia de EvLoop. El bucle a integrar; debe ser encapsulable (ver el método Ev::embeddableBackends()).
callback
data
Datos personalizados para asociar con el watcher.
priority
Ejemplo #1 Encapsulamiento de un bucle creado con el gestor kqueue en el bucle por omisión
<?php
/*
* Verifica si kqueue está disponible y crea un gestor kqueue
* para usarlo con los sockets (que funciona habitualmente con cualquier implementación
* de kqueue. Almacena el bucle de eventos kqueue/socket solo, en loop_socket.
* (opcionalmente, uso de EVFLAG_NOENV)
*
* Ejemplo tomado de
* 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;
}
// Ahora, se usa $socket_loop para todos los sockets, y $loop para todo lo demás
?>