©
本文档使用
php.cn手册 发布
(PECL zmq >= 0.5.0)
ZMQSocket::recv — Receives a message
$mode
= 0
] )
Receive a message from a socket. By default receiving will block until a message is available unless
ZMQ::MODE_NOBLOCK
flag is used. ZMQ::SOCKOPT_RCVMORE
socket option can be used for receiving multi-part messages. See ZMQSocket::setSockOpt()
for more information.
mode
Pass mode flags to receive multipart messages or non-blocking operation.
See ZMQ::MODE_*
constants.
Example #1 A send/recv example
Non-blocking send / receive
<?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 "Sending message\n" ;
$queue -> send ( "This is a message" , ZMQ :: MODE_NOBLOCK );
$sending = false ;
} else {
echo "Got response: " . $queue -> recv ( ZMQ :: MODE_NOBLOCK ) . "\n" ;
break;
}
} catch ( ZMQSocketException $e ) {
if ( $e -> getCode () === ZMQ :: ERR_EAGAIN ) {
echo " - Got EAGAIN, retrying ( $retries )\n" ;
} else {
die( " - Error: " . $e -> getMessage ());
}
}
usleep ( 5 );
} while (-- $retries );
?>
以上例程的输出类似于:
Sending message - Unable to execute operation, retrying (4) Got response: This is a message
Returns the message. Throws ZMQSocketException in error.
If ZMQ::MODE_NOBLOCK
is used and the operation would
block boolean false shall be returned.