PHP 8.3.21 Released!

EvEmbed::__construct

(PECL ev >= 0.2.0)

EvEmbed::__constructConstruye un objeto EvEmbed

Descripción

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

Se trata de un tipo de watcher avanzado que permite integrar un bucle de eventos en otro (actualmente, solo los eventos IO son soportados en el bucle interno, otros tipos de watcher no deben ser utilizados).

Ver la »  documentación libev para más detalles.

Este watcher es más útil en sistemas BSD donde kqueue no es utilizado, para poder manejar un gran número de sockets. Ver el ejemplo a continuación.

Parámetros

other

Una instancia de EvLoop. El bucle a integrar; debe ser encapsulable (ver el método Ev::embeddableBackends()).

callback

Ver las funciones de retrollamada de los Watcher.

data

Datos personalizados para asociar con el watcher.

priority

Prioridad del Watcher

Ejemplos

Ejemplo #1 Encapsulamiento de un bucle creado con el gestor kqueue en el bucle por omisión

<?php
/*
* Verifica si kqueue está disponible y crea un gestor kqueue
* para usarlo con los sockets (que funciona habitualmente con cualquier implementación
* de kqueue. Almacena el bucle de eventos kqueue/socket solo, en loop_socket.
* (opcionalmente, uso de EVFLAG_NOENV)
*
* Ejemplo tomado de
* 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;
}

// Ahora, se usa $socket_loop para todos los sockets, y $loop para todo lo demás
?>

Ver también

add a note

User Contributed Notes

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