在线文档教程
PHP
处理控制 | Process Control

EvEmbed::__construct

EvEmbed::__construct

(PECL ev >= 0.2.0)

EvEmbed::__construct — Constructs 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 » 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

  • Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops.

← EvEmbed

EvEmbed::createStopped →

© 1997–2017 The PHP Documentation Group

Licensed under the Creative Commons Attribution License v3.0 or later.

https://secure.php.net/manual/en/evembed.construct.php