ZMQPoll::poll

(PECL zmq >= 0.5.0)

ZMQPoll::pollSondear los elementos

Descripción

publicZMQPoll::poll(array&$readable, array&$writable, int$timeout = -1): int

Sondea los elementos en el conjunto de sondeo actual. Los elementos legibles y escribibles son devueltos en los parámetros readable y writable respectivamente. Se puede utilizar ZMQPoll::getLastErrors() para comprobar si existen errores.

Parámetros

readable

Un array donde se sevuelven los flujos de PHP/ZMQSockets legibles. El array se limpiará al inicio de la operación.

writable

Un array donde se sevuelven los flujos de PHP/ZMQSockets escribibles. El array se limpiará al inicio de la operación.

timeout

Tiempo de espera de la operación. -1 significa que el sondeo esperará hasta que al menos un elemento tenga actividad. Observe que desde la versión 1.0.0, el tiempo de espera del sondeo está definido en milisegundos, en lugar de en microsegundos.

Valores devueltos

Devuelve un número entero que representa la cantidad de elementos con actividad.

Errores/Excepciones

Lanza una ZMQPollException en caso de error.

Ejemplos

Ejemplo #1 Un ejemplo de ZMQPoll()

Crear un servidor de sondeos sencillo

<?php


$context = new ZMQContext();
$server = $context->getSocket(ZMQ::SOCKET_REP);


$server->bind("tcp://127.0.0.1:5555");


$poll = new ZMQPoll();


$id = $poll->add($server, ZMQ::POLL_IN | ZMQ::POLL_OUT);
echo
"Se añaió el objeto con id " . $id . "\n";


$readable = array();
$writable = array();

while (
true) {

$events = 0;

try {

$events = $poll->poll($readable, $writable, -1);
$errors = $poll->getLastErrors();

if (
count($errors) > 0) {
foreach (
$errors as $error) {
echo
"Error al sondear el objeto " . $error . "\n";
}
}
} catch (
ZMQPollException $e) {
echo
"Fallón el sondeo: " . $e->getMessage() . "\n";
}

if (
$events > 0) {

foreach ($readable as $r) {
try {
echo
"Mensaje recibido: " . $r->recv() . "\n";
} catch (
ZMQException $e) {
echo
"Falló la recepción: " . $e->getMessage() . "\n";
}
}


foreach ($writable as $w) {
try {
$w->send("Got it!");
} catch (
ZMQException $e) {
echo
"Falló el envío: " . $e->getMessage() . "\n";
}
}
}
}
?>
To Top