EvEmbed::__construct

(PECL ev >= 0.2.0)

EvEmbed::__constructКонструктор объекта EvEmbed

Описание

public EvEmbed::__construct(
     object $other ,
     callable $callback = ?,
     mixed $data = ?,
     int $priority = ?
)

Это довольно продвинутый тип наблюдателя, который позволяет встроить один цикл событий в другой (в настоящее время поддерживаются только события ввода-вывода во встроенном цикле, другие типы наблюдателей могут обрабатываться с задержкой или неверно и не должны использоваться).

Более подробно читайте в » документации libev.

Этот наблюдатель наиболее полезен в BSD системах без работающего kqueue для поддержки обработки большого количества сокетов. Смотрите пример ниже.

Список параметров

other

Экземпляр класса EvLoop. Событийный цикл для встраивания. Этот цикл должен быть встраиваемым (смотрите Ev::embeddableBackends() ).

callback

Смотрите 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 для всего остального
?>

Смотрите также

  • Ev::embeddableBackends() - Возвращает набор бэкендов, которые можно встроить в прочие событийные циклы
add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top