Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Php & Comet developing

[es] :: PHP :: Php & Comet developing

[ Pregleda: 2334 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

2paca.zwaka
Nikola Ninkovic
Web Developer
BTGPort
Trebinje, RS/BiH

Član broj: 277023
Poruke: 126
*.teol.net.



+7 Profil

icon Php & Comet developing01.01.2012. u 22:26 - pre 149 meseci
Ako moze malo pojasnjenje kako se radi Comet chat npr. tj. 'guranje' podataka od servera ka klijentu.........mozda i neki mali php kod.........hvala unapred
while(I->AmAlive()){
I->DoSomeProgramming();
}
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: Php & Comet developing06.01.2012. u 14:17 - pre 149 meseci
Posaljes ajax zahtev gde je timeout recimo 30 sekundi. Ako dobijes response onda obradis response i posaljes ponovo zahtev a ako se javio timeout onda opet posaljes zahtev.
Sa php u while petlji gde imas sleep(x) proveravas svake x sekunde da li ima novih poruka. Ako ima onda saljes ajax response na obradu a ako nema novih poruka onda i dalje vrtis petlju i proveravas.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
109.93.0.*



+44 Profil

icon Re: Php & Comet developing06.01.2012. u 16:56 - pre 149 meseci
Davno sam testirao comet chat i mogu reći da je to jedan od boljih IM sistema koji sam probao.
Comet chat koristi "heartbeat" sistem za proveravanje novih poruka. To znači da se na svakih par sekundi (ili više) preko AJAX zahteva proverava da li postoji nova nepročitana poruka u bazi podataka. Svaka poruka sadrži polje "read" - ako je read 1 onda je poruka pročitana, ako je 0 onda nije. Ako duže vreme nema poruka timeout za proveravanje poruka se povećava, tako da se na kraju poruke proveravaju na svakih 30 (ili više) sekundi. To sve može da se podesi.
Znači ako neko duže ne chatuje onda se "heartbeat" inkrementalno povećava za par sekundi, a sve to da bi se uštedeli resursi (ako nema novih poruka duže vreme, nema potrebe da se na svakih par sekundi proveravaju iste. Ali ako stigne nova poruka "heartbeat" sistem se restartuje i poruke se normalno proveravaju). Takođe, sve poruke se smeštaju u sesiju (ili cookies, ne mogu da se setim) kao niz, tako da se iz baze uzimaju samo nove poruke. Time mogu da se uštede resursi pogotovo kada je veliki saobraćaj.
Comet chat sistem nastoji da maksimalno štedi resurse. Upit koji je konstantan izgleda na primer ovako:
Code:
SELECT COUNT(id) FROM messages WHERE user_id = TVOJ_ID and read = 0;

Ako nema poruka AJAX call se produžava za 1 sec i sve do 30 (ili manje/više)
Ako postoji nepročitana poruka prvo se prikazuju poruke iz sesije (ili cookies) i tek onda nova poruka iz baze. Prikazana nova poruka ažurira polje read na 1.
To je neki osnovni koncept koji dobro radi u praksi, ali ako je veliki saobraćaj u pitanju (mnogo ljudi online i chatuje) ovaj sistem može dosta opteretiti server. Za tako nešto se obično koristi AJAX Push tehnika (primer: http://www.ape-project.org/)
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

ManInTheBox
Beograd

Član broj: 272293
Poruke: 26
*.dynamic.sbb.rs.



Profil

icon Re: Php & Comet developing07.01.2012. u 00:53 - pre 149 meseci
Evo i ja da se nadovezem za http://www.ape-project.org/ kad se vec spominje JavaScript.
Postoji jos nesto ako budes zainteresovan za serverski JavaScript (Node.js) a vise informacija ovde http://socket.io/
Pozdrav
 
Odgovor na temu

[es] :: PHP :: Php & Comet developing

[ Pregleda: 2334 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.