Reçoit un message

# ZMQSocket::recv

(PECL zmq >= 0.5.0)

ZMQSocket::recv — Reçoit un message

### Description

public function ZMQSocket::recv(int `$mode` = 0): string

Reçoit 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_*`.

### Valeurs de retour

Retourne le message. Si `ZMQ::MODE_DONTWAIT` est utilisé et que l'opération bloquerait `false` devrait être retourné.

### Erreurs / Exceptions

Lance une ZMQSocketException en cas d'erreur.

### 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);
    ?>

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open