Php/docs/evembed.construct

From Get docs

EvEmbed::__construct

(PECL ev >= 0.2.0)

EvEmbed::__constructConstructs the EvEmbed object


Description

public EvEmbed::__construct ( object $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 [http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_ev_embed_code_when_one_backend_ » 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


Return Values

Returns EvEmbed object on success.


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?>

See Also