文字

ZMQSocket::recv

(PECL zmq >= 0.5.0)

ZMQSocket::recvReceives a message

说明

public string ZMQSocket::recv ([ integer $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.

上一篇: 下一篇: