EvEmbed::__construct

(PECL ev >= 0.2.0)

EvEmbed::__constructConstructs the EvEmbed object

Description

publicEvEmbed::__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 » 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

$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

To Top