ZMQPoll
PHP Manual

ZMQPoll::poll

(PECL zmq >= 0.5.0)

ZMQPoll::pollSonde les éléments

Description

public integer ZMQPoll::poll ( array &$readable , array &$writable [, integer $timeout = -1 ] )

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($serverZMQ::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";
           }
       }
   }
}
?>

Valeurs de retour

Retourne un entier représentant la quantité d'éléments ayant une activité. Lance une exception ZMQPollException en cas d'erreur.


ZMQPoll
PHP Manual