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.
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com