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

# EvEmbed::__construct

(PECL ev >= 0.2.0)

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

### Описание

public function 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() - Возвращает набор бэкендов, которые можно встроить в прочие событийные циклы

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open