LoopRun Barcelona 2020

ZMQSocket::recv

(PECL zmq >= 0.5.0)

ZMQSocket::recvRecoit un message

Description

public ZMQSocket::recv ([ int $mode = 0 ] ) : string

Recoit un message du socket. Par défaut, la réception va être bloquante tant qu'un message est disponible, à moins que ZMQ::MODE_DONTWAIT ne soit utilisé. L'option ZMQ::SOCKOPT_RCVMORE du socket peut être utilisée pour recevoir des messages multipart. Voir ZMQSocket::setSockOpt() pour plus d'informations.

Liste de paramètres

mode

Drapeaux de mode pour recevoir les messages multipart, ou rendre l'opération non-bloquante. Voir les constantes ZMQ::MODE_*.

Exemples

Exemple #1 Un exemple d'envoi/réception

Envoi et réception non bloquante

<?php

/* Crée un nouvel objet de file ; il doit y avoir un serveur de l'autre côté */
$queue = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REQ);
$queue->connect("tcp://127.0.0.1:5555");

/* Assigne le socket 1 à la file, envoi et réceptionne */
$retries 5;
$sending true;

/* Démarre la boucle */
do {
    try {
        
/* Tente un envoi/réception */
        
if ($sending) {
            echo 
"Envoi du message\n";
            
$queue->send("Ceci est un message"ZMQ::MODE_DONTWAIT);
            
$sending false;
        } else {
            echo 
"Réception de la réponse : " $queue->recv(ZMQ::MODE_DONTWAIT) . "\n";
            break;
        }
    } catch (
ZMQSocketException $e) {
        
/* EAGAIN signifie que l'opération a bloqué ; nouvelle tentative */
        
if ($e->getCode() === ZMQ::ERR_EAGAIN) {
            echo 
" - Réception de EAGAIN, nouvelle tentative ($retries)\n";
        } else {
            die(
" - Erreur : " $e->getMessage());
        }
    }
    
/* On attend un peu entre les opérations */
    
usleep(5);
} while (--
$retries);
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

Envoi du message
 - Unable to execute operation, retrying (4)
Réception de la réponse : Ceci est un message

Valeurs de retour

Retourne le message. Lance une exception ZMQSocketException en cas d'erreur. Si ZMQ::MODE_DONTWAIT est utilisé, et que l'opération est bloquante, FALSE sera retourné.

add a note add a note

User Contributed Notes

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