ZMQPoll::poll
(PECL zmq >= 0.5.0)
ZMQPoll::poll — Sonde les éléments
Description
&$readable
, array &$writable
[, int $timeout
= -1
] ) : int
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.
Liste de paramètres
-
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.
Exemples
Exemple #1 Exemple avec ZMQPoll()
Create a simple poll server
<?php
/* Crée un socket, ainsi qu'un masque de réponse de la requête */
$context = new ZMQContext();
$server = $context->getSocket(ZMQ::SOCKET_REP);
/* Lie le port 5555 sur 127.0.0.1 */
$server->bind("tcp://127.0.0.1:5555");
/* Crée un nouveau poll pour les messages entrants/sortants */
$poll = new ZMQPoll();
/* Ajout l'objet et écoute les entrées/sorties du poll */
$id = $poll->add($server, ZMQ::POLL_IN | ZMQ::POLL_OUT);
echo "Added object with id " . $id . "\n";
/* Initialise les tableaux accueillant les éléments en lecture et écriture */
$readable = array();
$writable = array();
while (true) {
/* Nombre d'événements à récupérer */
$events = 0;
try {
/* Bloc le Poll tant qu'il y a quelque chose à faire */
$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) {
/* Boucle sur les objets accessible en lecture et réceptionne les messages */
foreach ($readable as $r) {
try {
echo "Received message: " . $r->recv() . "\n";
} catch (ZMQException $e) {
echo "recv failed: " . $e->getMessage() . "\n";
}
}
/* Boucle sur les objets accessible en écriture et retourne les messages */
foreach ($writable as $w) {
try {
$w->send("Got it!");
} catch (ZMQException $e) {
echo "send failed: " . $e->getMessage() . "\n";
}
}
}
}
?>
Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-zmqpoll.poll.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.