EvEmbed::__construct
(PECL ev >= 0.2.0)
EvEmbed::__construct — Constructs the EvEmbed object
Description
$other
[,
callable
$callback
[,
mixed
$data
[,
int
$priority
]]] )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.
Liste de paramètres
-
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
Valeurs de retour
Returns EvEmbed object on success.
Exemples
Exemple #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 ?>
Voir aussi
- Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops.