EvEmbed::__construct
Constructs the EvEmbed object
Description
public
EvEmbed::__construct(
object
$other
,
callable
$callback
= ?,
mixed
$data
= ?,
int
$priority
= ?
)
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
-
other
-
Instance of
EvLoop
. The loop to embed, this loop must be embeddable(see
Ev::embeddableBackends
).
-
callback
-
See
Watcher callbacks
.
-
data
-
Custom data associated with the watcher.
-
priority
-
Watcher priority
Examples
Example #1 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
?>