(PECL zmq >= 0.5.0)
ZMQSocket::recv — Recebe uma mensagem
   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_DONTWAIT seja usada. A constante ZMQ::SOCKOPT_RCVMORE
   pode ser usada para receber mensagens de múltiplas partes. Consulte ZMQSocket::setSockOpt()
   para mais informações.
  
mode
       Passa indicadores para a recepção de mensagens de múltiplas partes ou operações não bloqueantes.
       Consulte as constantes ZMQ::MODE_*.
      
   Retorna a mensagem. Se ZMQ::MODE_DONTWAIT
   for usada e a operação for bloqueante, false deve ser retornado.
  
Lança ZMQSocketException em erros.
Exemplo #1 Um 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_DONTWAIT);
            $enviando = false;
        } else {
            echo "Obteve resposta: " . $fila->recv(ZMQ::MODE_DONTWAIT) . "\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 produzirá algo semelhante a:
Enviando mensagem - Obteve EAGAIN, tentando novamente (4) Obteve resposta: Isso é uma mensagem
