(PECL zmq >= 0.5.0)
ZMQSocket::recv — Recoit un message
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
$queue = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REQ);
$queue->connect("tcp://127.0.0.1:5555");
$retries = 5;
$sending = true;
do {
try {
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) {
if ($e->getCode() === ZMQ::ERR_EAGAIN) {
echo " - Réception de EAGAIN, nouvelle tentative ($retries)\n";
} else {
die(" - Erreur : " . $e->getMessage());
}
}
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