(PECL zmq >= 0.5.0)
ZMQSocket::recv — Recoit un message
$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.
  
mode
       Drapeaux de mode pour recevoir les messages multipart, ou rendre
       l'opération non-bloquante. Voir les constantes
       ZMQ::MODE_*.
      
   Retourne le message. Si ZMQ::MODE_DONTWAIT
   est utilisé et que l'opération bloquerait false devrait être retourné.
  
Lance une ZMQSocketException en cas d'erreur.
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);
?>
Résultat de l'exemple ci-dessus est similaire à :
Envoi du message - Unable to execute operation, retrying (4) Réception de la réponse : Ceci est un message