(PECL zmq >= 0.5.0)
ZMQPoll::poll — Sonde les éléments
Sonde les éléments du poll courant. Les éléments accessibles en lecture et en écriture sont retournés respectivement dans les paramètres readable
et writable
. La méthode ZMQPoll::getLastErrors() peut être utilisée pour vérifier s'il y a des erreurs.
readable
Tableau contenant les ZMQSockets/flux PHP retournés, et accessible en lecture. Le tableau sera réinitialisé au début de l'opération.
writable
Tableau contenant les ZMQSockets/flux PHP retournés, et accessible en écriture. Le tableau sera réinitialisé au début de l'opération.
timeout
Délai maximal d'attente de l'opération. -1 signifie que le poll va attendre qu'au moins un élément ne soit actif. Notez que depuis la version 1.0.0, le délai maximal d'attente du poll est défini en millisecondes, plutôt en microsecondes.
Retourne un entier représentant la quantité d'objets avec activité.
Lance une ZMQPollException en cas d'erreur.
Exemple #1 Exemple avec ZMQPoll()
Create a simple poll server
<?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 "Added object with 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 polling object " . $error . "\n";
}
}
} catch (ZMQPollException $e) {
echo "poll failed: " . $e->getMessage() . "\n";
}
if ($events > 0) {
foreach ($readable as $r) {
try {
echo "Received message: " . $r->recv() . "\n";
} catch (ZMQException $e) {
echo "recv failed: " . $e->getMessage() . "\n";
}
}
foreach ($writable as $w) {
try {
$w->send("Got it!");
} catch (ZMQException $e) {
echo "send failed: " . $e->getMessage() . "\n";
}
}
}
}
?>