Criando um Listener de eventos em PHP, aguardando o conteúdo XML

votos
18

Eu preciso criar um ouvinte de evento. Eu sou um novato para que seja gentil :)

Basicamente, eu estou em page1.php (arquivo php); Quero dentro de um loop para ir verificar page2.xml (arquivo xml) para alguma informação que deve ser recebido em algum ponto. Ou verificá-lo o tempo todo, ou esperar e cada 5 minutos ou assim para ver se alguma informação foi recebida lá. Qualquer um deles funciona para mim.

Se nenhuma informação foi recebida depois de alguns minutos, em seguida, eu quero correr novamente o loop (até que seja recebido), caso contrário, seguir em frente e fazer alguma coisa com a minha informação recém-recebida. Essa parte eu não tenho nenhum problema com, apenas o próprio ouvinte de evento. Eu não conseguia encontrar a função que eu deveria estar usando em qualquer lugar. :( Eu só preciso verificar e recuperar o conteúdo do arquivo xml de vez em quando.

Eu não estou tão certo como eu devo ir sobre isso se não há apenas uma função que faz isso, mas eu não poderia encontrar muito quando eu procurei por evento ouvinte php.

Qualquer ajuda seria apreciada: a referência ao código de tutoriais / sample / mesmo apenas me dizendo o que palavras-chave que eu deveria estar procurando ou o que eu preciso aprender primeiro, a fim de fazer isso.

Obrigado!

Publicado 21/12/2011 em 23:17
usuário
Em outras línguas...                            


3 respostas

votos
1

Bem, primeiro você deve compreender a terminologia que você está usando. PHP não é uma linguagem orientada a eventos, é uma linguagem orientada por pedido. Um pedido entra no web-servidor, PHP analisa-lo e uma resposta é enviada de volta para o solicitante. Em nenhum momento há eventos desencadeada que você pode processar ou manipular. Você pode implementar o seu próprio "sistema de eventos", mas em última análise, isso é muito mais trabalho do que o que seu caso de uso implica.

Sua melhor aposta é provavelmente utilizando AJAX e continuamente fazendo solicitações ao seu script PHP até retornar os dados que você está procurando. Finalmente você terá que aprender sobre o XMLHttpRequestobjeto JavaScript. Depois de entender como fazer solicitações assíncronas utilizando JavaScript você pode olhar para o setInterval()método de como fazer repetidamente uma solicitação.

Uma vez que você pode repetidamente fazer solicitações assíncronas que deveria ser um processo relativamente simples de criar uma página web onde você pode acionar as solicitações de AJAX para serem enviadas.


Não há necessidade de um loop em seu código PHP. O ciclo é efectivamente feito na outra extremidade. Aqui está um fluxo de trabalho textual que você pode seguir:

  1. Ir para um site projetado para acionar suas chamadas AJAX e dispará-los.
  2. Faça o seu pedido assíncrono para o seu script PHP.
  3. Dentro de seu script PHP abrir o arquivo XML e verificar o conteúdo necessário.
  4. Retornar uma resposta na forma de um objeto JSON. Uma resposta pode significar que os dados não foi atualizado, a outra resposta significa que os dados foram atualizados.
  5. Analise a resposta, se os dados não foi atualizado repita a partir do passo (2). Se os dados foram atualizados continue na etapa (6).
  6. Exibir uma saudação de comemoração que seus dados foram atualizados ou um aviso de que ainda estamos esperando os dados a serem atualizados. Talvez você pode ter o número de tentativas, bem como, para o lado.
Respondeu 21/12/2011 em 23:57
fonte usuário

votos
0

Eu fiz algo assim escrever um parser caixa de entrada em PHP. Você é a melhor opção é:

Código page1.phpem que você só precisa fazer 2 coisas: ler XML a partir page2.xmle se há algo "novo" apenas executar o código de análise de dados.

Setup um Cron trabalho (se você estiver sob linux) para executar a cada 5 minutos ou mais (comando Cron é algo como: php /path/to/page1.php). Da mesma forma, se você estiver executando o Windows você pode configurar uma tarefa agendada e executar o mesmo comando. Esteja ciente de que o caminho completo para a instalação do PHP deve estar na PATHvariável de ambiente.

Respondeu 22/12/2011 em 00:20
fonte usuário

votos
1

Eu fiz o seguinte:

salvo automaticamente ao banco de dados cada vez que algo novo entrou.

Em seguida, correu um loop php que a cada poucos minutos verificados para ver se há algo novo no banco de dados que se encaixa os parâmetros deste novo evento (incluindo que happenned dentro do prazo dos últimos minutos). Eu usei flush();e depois sleep(120);no circuito para obter o loop para manter funcionando a cada poucos minutos, até que a nova informação veio em caso em que ele irá break();ou die();.

Respondeu 03/01/2012 em 23:57
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more