ZMQSocket::recv

(PECL zmq >= 0.5.0)

ZMQSocket::recvRecebe uma mensagem

Descrição

public ZMQSocket::recv ( integer $mode = 0 ) : string

Recebe uma mensagem a partir de um socket. Por padrão a recepção será bloqueada até que uma mensagem esteja disponível, a menos que a constante ZMQ::MODE_NOBLOCK seja usada. A constante ZMQ::SOCKOPT_RCVMORE pode ser usada para receber mensagens com várias partes. Consulte ZMQSocket::setSockOpt() para mais informações.

Parâmetros

mode

Passa indicadores para a recepção de mensagens com várias partes ou oerações não bloqueantes. Consulte as constantes ZMQ::MODE_*.

Exemplos

Exemplo #1 A exemplo de envio/recepção

Envio / recepção não bloqueantes

<?php

/* Cria um novo objeto de enfileiramento, é necessário existir um servidor na outra ponta */
$fila = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REQ);
$fila->connect("tcp://127.0.0.1:5555");

/* Atribui o socket 1 à fila, envia e recebe */
$tentativas 5;
$enviando true;

/* Inicia um laço */
do {
    try {
        
/* Tenta enviar / receber */
        
if ($enviando) {
            echo 
"Enviando mensagem\n";
            
$fila->send("Isso é uma mensagem"ZMQ::MODE_NOBLOCK);
            
$enviando false;
        } else {
            echo 
"Obteve resposta: " $fila->recv(ZMQ::MODE_NOBLOCK) . "\n";
            break;
        }
    } catch (
ZMQSocketException $e) {
        
/* EAGAIN significa que a operação foi bloqueada, tentar novamente */
        
if ($e->getCode() === ZMQ::ERR_EAGAIN) {
            echo 
" - Obteve EAGAIN, tentando novamente ($tentativas)\n";
        } else {
            die(
" - Erro: " $e->getMessage());
        }
    }
    
/* Dá uma pausa durante as operações */
    
usleep(5);
} while (--
$tentativas);
?>

O exemplo acima irá imprimir algo similar à:

Enviando mensagem
 - Obteve EAGAIN, tentando novamente (4)
Obteve resposta: Isso é uma mensagem

Valor Retornado

Retorna a mensagem. Lança uma exceção ZMQSocketException caso haja erro. Se a constante ZMQ::MODE_NOBLOCK for usada e operação seja bloqueada, bool falso é retornado.

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top