ZMQPoll
PHP Manual

ZMQPoll::poll

(PECL zmq >= 0.5.0)

ZMQPoll::pollConsulta os itens

Descrição

public integer ZMQPoll::poll ( array &$readable , array &$writable [, integer $tempo_limite = -1 ] )

Consulta os itens na lista de pesquisa atual. Os itens de leitura e escrita são retornados nos parâmetros readable e writable. A função ZMQPoll::getLastErrors() pode ser usada para verificar se houveram erros.

Parâmetros

readable

Um array (vetor) onde os ZMQSockets de leitura ou recursos de fluxo (streams) PHP são retornados. O array será esvaziado no inicio da operação.

writable

Um array (vetor) onde os ZMQSockets de escrita ou recursos de fluxo (streams) PHP são retornados. O array será esvaziado no inicio da operação.

tempo_limite

O tempo limite de execução da operação. -1 significa que a pesquisa espera até pelo menos um item entre em atividade. Note que a partir da versão 1.0.0 o tempo limite de consulta é definido em milisegundos, em vez de microsegundos.

Exemplos

Exemplo #1 Um exemplo de ZMQPoll()

Cria um servidor de consulta simples

<?php

/* Cria um socket, padrão requisição-resposta (socket de resposta) */
$contexto = new ZMQContext();
$servidor  $contexto->getSocket(ZMQ::SOCKET_REP);

/* Associa à porta 5555 em 127.0.0.1 */
$servidor->bind("tcp://127.0.0.1:5555");

/* Cria uma nova lista de consulta para mensagens de entrada/saída */
$consulta = new ZMQPoll();

/* Adiciona o objeto e espera por consultas de entrada/saída */
$id $consulta->add($servidorZMQ::POLL_IN ZMQ::POLL_OUT);
echo 
"Adicionou o objeto com id " $id "\n";

/* Inicializa os arrays de leitura e escrita */
$leitura = array();
$escrita = array();

while (
true) {
   
/* Quantidade de eventos recuperados */
   
$eventos 0;

   try {
       
/* Pesquisa até que haja algo a ser feito */
       
$eventos $consulta->poll($leitura$escrita, -1);
       
$erros $consulta->getLastErrors();

       if (
count($erros) > 0) {
           foreach (
$erros as $erro) {
               echo 
"Erro ao consultar objeto " $erro "\n";
           }
       }
   } catch (
ZMQPollException $e) {
       echo 
"A pesquisa falhou: " $e->getMessage() . "\n";
   }

   if (
$eventos 0) {
       
/* Itera através dos objetos de leitura e mensagens recebidas */
       
foreach ($leitura as $le) {
           try {
               echo 
"Mensagem recebida: " $le->recv() . "\n";
           } catch (
ZMQException $e) {
               echo 
"o método recv falhou: " $e->getMessage() . "\n";
           }
       }

       
/* Itera através dos objetos de escrita e das mensagens enviada */
       
foreach ($escrita as $es) {
           try {
               
$es->send("Recebido!");
           } catch (
ZMQException $e) {
               echo 
"o método send falhou: " $e->getMessage() . "\n";
           }
       }
   }
}
?>

Valor Retornado

Retorna um inteiro representando a quantidade de itens com atividade. Lança uma exceção ZMQPollException caso haja erro.


ZMQPoll
PHP Manual