Creazione di un ascoltatore di eventi in PHP, in attesa di contenuti XML

voti
18

Ho bisogno di creare un listener di eventi. Sono un novizio in modo da essere gentile :)

Fondamentalmente io sono su page1.php (file php); Voglio all'interno di un ciclo di andare a controllare page2.xml (file XML) di alcune informazioni che dovrebbero essere ricevuti ad un certo punto. O controllare tutto il tempo, o aspettare e ogni 5 minuti o giù di lì per vedere se qualche informazione è stata ricevuta lì. Uno di loro lavorano per me.

Se nessun informazioni è stata ricevuta dopo pochi minuti, poi voglio eseguire nuovamente il ciclo (fino a quando non viene ricevuto), in caso contrario, andare avanti e fare qualcosa con le mie informazioni appena ricevute. Questa parte non ho alcun problema con, solo l'ascoltatore evento stesso. Non riuscivo a trovare la funzione dovrei usare ovunque. :( Ho solo bisogno di controllare e recuperare il contenuto del file XML di tanto in tanto.

Io non sono così sicuro di come dovrei andare su questo, se non v'è solo una funzione che fa questo, ma non sono riuscito a trovare molto quando ho cercato per listener di eventi php.

Qualsiasi aiuto sarebbe apprezzato: riferimento al codice di tutorial / campione / anche solo dirmi quali parole chiave dovrei essere cercando o quello che ho bisogno di imparare in primo luogo per fare questo.

Grazie!

È pubblicato 21/12/2011 alle 23:17
dall'utente
In altre lingue...                            


3 risposte

voti
1

Beh, in primo luogo è necessario comprendere la terminologia che si sta utilizzando. PHP non è un linguaggio event-driven, è un linguaggio di richiesta-driven. Una richiesta viene al web-server, PHP analizza e una risposta viene inviata al richiedente. In nessun momento ci sono eventi innescata che è possibile elaborare o gestire. È possibile implementare il proprio "sistema di eventi", ma in ultima analisi, questo è molto più lavoro di quello che il vostro caso d'uso comporta.

La cosa migliore è probabilmente utilizzando AJAX e continua di richieste al tuo script PHP fino a tornare i dati che si sta cercando. In ultima analisi è necessario conoscere XMLHttpRequestl'oggetto JavaScript. Dopo aver compreso come fare richieste asincrone utilizzando JavaScript è possibile guardare il setInterval()metodo per come fare ripetutamente una richiesta.

Una volta che si può fare più volte richieste asincrone dovrebbe essere relativamente semplice processo di creazione di una pagina web in cui è possibile attivare le richieste AJAX da inviare.


Non v'è alcuna necessità di un ciclo nel codice PHP. Il ciclo è effettivamente fatto su l'altra estremità. Ecco un flusso di lavoro testuale che si potrebbe seguire:

  1. Vai a un sito progettato per attivare le chiamate AJAX e innescare.
  2. Fai la tua richiesta asincrona allo script PHP.
  3. All'interno del vostro script PHP aprire il file XML e verificare i contenuti necessari.
  4. Restituisce una risposta sotto forma di un oggetto JSON. Una risposta può significare i dati non è stato aggiornato, l'altra risposta significa che i dati sono stati aggiornati.
  5. Analizzare la risposta, se i dati non sono stati aggiornati ripetere dal passo (2). Se i dati sono stati aggiornati passare al punto (6).
  6. Visualizzare un saluto celebrativo che i dati è stato aggiornato o un avviso che siamo ancora in attesa per i dati da aggiornare. Forse si può avere il numero di tentativi e, di lato.
Risposto il 21/12/2011 a 23:57
fonte dall'utente

voti
0

Ho fatto qualcosa di simile a scrivere un parser casella di posta in PHP. Sei migliore opzione è quella di:

Codice page1.phpin cui hai solo bisogno di fare 2 cose: leggere XML da page2.xmle se c'è qualcosa di "nuovo" basta eseguire il codice dei dati-analisi.

Impostare un Cron lavoro (se sei sotto linux) per eseguire ogni 5 minuti o giù di lì (comando Cron è qualcosa di simile: php /path/to/page1.php). Allo stesso modo, se si sta eseguendo Windows è possibile impostare un'operazione pianificata ed eseguire lo stesso comando. Essere consapevoli che il percorso completo per l'installazione di PHP deve essere in PATHvariabile di ambiente.

Risposto il 22/12/2011 a 00:20
fonte dall'utente

voti
1

Ho fatto la seguente:

salvate automaticamente nel database ogni volta qualcosa di nuovo è venuto in.

Poi corse un ciclo PHP che ogni pochi minuti controllato per vedere se c'è qualcosa di nuovo nel database che si adatta i parametri di questo nuovo evento (comprese che happenned entro i termini degli ultimi minuti). Ho usato flush();e poi sleep(120);nel ciclo per ottenere il ciclo per continuare a correre ogni pochi minuti, fino a quando il nuovo venuto informazioni in nel qual caso lo farà break();o die();.

Risposto il 03/01/2012 a 23:57
fonte dall'utente

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