EvEmbed::__construct
(PECL ev >= 0.2.0)
Constructs the EvEmbed object
Description
This is a rather advanced watcher type that lets to embed one event loop into another(currently only IO events are supported in the embedded loop, other types of watchers might be handled in a delayed or incorrect fashion and must not be used).
See the libev documentation for details.
This watcher is most useful on BSD systems without working kqueue to still be able to handle a large number of sockets. See example below.
Parameters
otherInstance of
EvLoop. The loop to embed, this loop must be embeddable(seeEv::embeddableBackends).callbackSee Watcher callbacks.
dataCustom data associated with the watcher.
priority
Examples
Embedding loop created with kqueue backend into the default loop
<?php
/*
* Check if kqueue is available but not recommended and create a kqueue backend
* for use with sockets (which usually work with any kqueue implementation).
* Store the kqueue/socket-only event loop in loop_socket. (One might optionally
* use EVFLAG_NOENV, too)
*
* Example borrowed from
* 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;
}
// Now use $socket_loop for all sockets, and $loop for anything else
?>See Also
Ev::embeddableBackends