Crearea unui eveniment în PHP Listener, în așteptarea conținutului XML

voturi
18

Am nevoie pentru a crea un ascultător eveniment. Sunt un novice astfel încât să fie un fel :)

Practic sunt pe page1.php (fișier php); Vreau o buclă în interiorul pentru a merge verifica page2.xml (fișier XML) pentru unele informații care ar trebui să fie primite la un moment dat. Ori verifica tot timpul, sau așteptați și la fiecare 5 minute sau cam asa ceva pentru a vedea dacă unele informații au fost primite acolo. Oricare dintre ele lucrează pentru mine.

În cazul în care nu există informații a fost primit după câteva minute, apoi vreau să curgă din nou bucla (până la primirea acestuia), în caz contrar, merge mai departe și de a face ceva cu informațiile mele nou primite. Această parte am nici o problema cu, doar ascultător eveniment în sine. Nu am putut găsi funcția I ar trebui să fie folosind oriunde. :( Am nevoie doar pentru a verifica și de a prelua conținutul fișierului XML la fiecare atât de des.

Nu sunt atât de sigur cum ar trebui să merg cu privire la acest lucru, dacă există, nu este doar o funcție care face acest lucru, dar nu am putut găsi mult atunci când am căutat „ascultător php eveniment“.

Orice ajutor ar fi apreciat: trimitere la codul de tutoriale / probă / chiar și doar să-mi spui ce cuvinte cheie ar trebui să fie în căutarea sau ceea ce am nevoie să învețe mai întâi, în scopul de a face acest lucru.

Mulțumiri!

Întrebat 21/12/2011 la 23:17
de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
1

Ei bine, în primul rând ar trebui să înțeleagă terminologia pe care îl utilizați. PHP nu este un limbaj determinate de un eveniment, este o limbă bazată pe cerere. O cerere vine in web-server, PHP va parsa și un răspuns este trimis înapoi la solicitant. În niciun moment nu există evenimente declanșate pe care le poate procesa sau manipula. Puteți implementa propriul „sistem de eveniment“, dar în cele din urmă acest lucru este mult mai mult de lucru decât ceea ce atrage după sine dumneavoastră caz ​​de utilizare.

Cel mai bun pariu este probabil folosind AJAX și de a face în mod continuu cereri către script PHP până când reveniți datele pe care le căutați. În cele din urmă , va trebui să învețe despre XMLHttpRequestobiect JavaScript. După ce înțelegeți modul de a face cereri asincrone folosind JavaScript poti sa te uiti la setInterval()metoda de modul de a face în mod repetat o cerere.

Odată ce se poate face în mod repetat cereri asincrone ar trebui să fie un relativ simplu proces de creare a unei pagini web pe care poate declanșa cererile AJAX care urmează să fie trimise.


Nu este nevoie de o buclă în codul PHP. Bucla se face în mod eficient la celălalt capăt. Iată un flux de lucru textual pe care le-ar putea urma:

  1. Du-te la un site conceput pentru a declanșa apelurile AJAX și să le declanșeze.
  2. Asigurați-vă solicitarea asincronă la script-ul PHP.
  3. În interiorul script-ul PHP deschide fișierul XML și verificați pentru conținutul necesar.
  4. Returnează un răspuns sub forma unui obiect JSON. Un răspuns poate însemna că datele nu a fost actualizat, celălalt răspuns înseamnă că datele au fost actualizate.
  5. Parse răspunsul, în cazul în care datele nu au fost actualizate repeta de la etapa (2). În cazul în care datele au fost actualizate în continuare pasul (6).
  6. Afișează un mesaj de salut sărbătoare că datele au fost actualizate sau o notificare că suntem încă în așteptare pentru datele care urmează să fie actualizate. Poate că puteți avea numărul de încercări, precum și, într-o parte.
Publicat 21/12/2011 la 23:57
sursa de către utilizator

voturi
0

Am făcut ceva de genul asta scriind un interpretor inbox-ul în PHP. Ești cea mai bună opțiune este de a:

Codul page1.phpîn care trebuie doar să faci 2 lucruri: citește XML de page2.xmlși dacă există ceva „nou“ doar executa codul-parsarea de date.

Setup un Cron loc de muncă (dacă sunteți sub Linux) pentru a executa la fiecare 5 minute sau cam asa ceva (comanda Cron este ceva de genul: php /path/to/page1.php). În același mod, dacă executați Windows puteți seta o sarcină programată și să execute aceeași comandă. Fiți conștienți de faptul că calea completă la instalarea PHP ar trebui să fie în PATHvariabila de mediu.

Publicat 22/12/2011 la 00:20
sursa de către utilizator

voturi
1

Am făcut următoarele:

salvate automat în baza de date de fiecare dată când ceva nou venit.

Apoi a fugit o buclă php care la fiecare câteva minute verificate pentru a vedea dacă există ceva nou în baza de date care se potrivește parametrii acestui nou eveniment (inclusiv faptul că în intervalul de timp intamplat din ultimele câteva minute). Am folosit flush();și apoi sleep(120);în bucla pentru a obține bucla de a continua să fie difuzate la fiecare câteva minute, până când noile informații a venit în care caz va break();sau die();.

Publicat 03/01/2012 la 23:57
sursa de către utilizator

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