Php/docs/zmqsocket.recv

From Get docs

ZMQSocket::recv

(PECL zmq >= 0.5.0)

ZMQSocket::recvReceives 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.