(PECL ev >= 0.2.0)
EvEmbed::__construct — Конструктор объекта EvEmbed
$other
,$callback
= ?,$data
= ?,$priority
= ?Это довольно продвинутый тип наблюдателя, который разрешает встроить один цикл событий в другой. Пока поддерживаются только события ввода-вывода во встроенном цикле, другие типы наблюдателей иногда обрабатываются с задержкой или неправильно, и их не рекомендуют использовать.
Подробнее об этом рассказывает страница » документации libev.
Этот наблюдатель наиболее полезен
в BSD системах без работающего
kqueue для поддержки обработки большого количества сокетов.
Смотрите пример на этой странице.
other
callback
data
priority
Пример #1 Пример встраивания цикла, который создали через kqueue, в событийный цикл по умолчанию
<?php
/*
* Проверьте, доступен ли kqueue, и создайте бэкенд kqueue
* для взаимодействия с сокетами; часто это работает с любой реализацией kqueue.
* Сохраните событийный цикл kqueue/socket-only в loop_socket. Опционально указывают
* флаг EVFLAG_NOENV
*
* Пример взяли из
* 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;
}
// Теперь используйте $socket_loop для каждого сокета, а $loop для всего остального
?>