Php/docs/zmqsocket.recv
ZMQSocket::recv
(PECL zmq >= 0.5.0)
ZMQSocket::recv — Receives a message
Description
public ZMQSocket::recv
([ int $mode
= 0
] ) : string
Receive a message from a socket. By default receiving will block until a message is available unless
ZMQ::MODE_DONTWAIT
flag is used. ZMQ::SOCKOPT_RCVMORE
socket option can be used for receiving multi-part messages. See ZMQSocket::setSockOpt()
for more information.
Parameters
mode
- Pass mode flags to receive multipart messages or non-blocking operation. See
ZMQ::MODE_*
constants.
Examples
Example #1 A send/recv example
Non-blocking send / receive
<?php/* Create new queue object, there needs to be a server at the other end */$queue = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REQ);$queue->connect("tcp://127.0.0.1:5555");/* Assign socket 1 to the queue, send and receive */$retries = 5;$sending = true;/* Start a loop */do { try { /* Try to send / receive */ if ($sending) { echo "Sending message\n"; $queue->send("This is a message", ZMQ::MODE_DONTWAIT); $sending = false; } else { echo "Got response: " . $queue->recv(ZMQ::MODE_DONTWAIT) . "\n"; break; } } catch (ZMQSocketException $e) { /* EAGAIN means that the operation would have blocked, retry */ if ($e->getCode() === ZMQ::ERR_EAGAIN) { echo " - Got EAGAIN, retrying ($retries)\n"; } else { die(" - Error: " . $e->getMessage()); } } /* Sleep a bit between operations */ usleep(5);} while (--$retries);?>
The above example will output something similar to:
Sending message - Unable to execute operation, retrying (4) Got response: This is a message
Return Values
Returns the message. Throws ZMQSocketException in error.
If ZMQ::MODE_DONTWAIT
is used and the operation would
block bool false shall be returned.