AutoUpdate page - Ajutor

Discutii legate de AJAX, jQuery, MooTools, Prototype, Dojo, Yahoo! UI Library,script.aculo.us, ExtJS,AngularJS, Backbone.js, Ember.js, KnockoutJS

Moderator: Moderatori

vali911
PHPRomania Supporter
Mesaje: 8
Membru din: Joi Oct 06, 2011 11:28 am

AutoUpdate page - Ajutor

Mesajde vali911 » Joi Oct 06, 2011 12:05 pm

Salut!
Cum pot face eu(admin) ca atunci cand schimb ceva in baza de date(adaug ceva) ,pagina utilizatorului sa "observe k s-a schimbat ceva" si ca trebuie sa isi faca update(sa incarce din nou div-ul sau sa execute o functie)
-ma interesa cu ce limbaje si functii
-dar fara metode cu (userul apasa buton si incarca div)
-si nici cu setInterval() din secunda in secunda ,ca ma gandesc ca daca am 1000 de useri online si fiecare pagina sa stea sa deschida baza de date ........

Ex.
-pe pagina userului apare "Useri online=4"
-dupa cateva secunde se logheaza al 5-lea
-pe pagina userului sa apara "Useri online=5" fara a da refresh etc..



-se poate altfel?



MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Mesajde MarPlo » Joi Oct 06, 2011 8:36 pm

Salut,
O solutie ar fi asa. Cand un utilizator intra online se face actualizarea celor care sunt online si se retin intr-un fisier text pe server (xml, json sau direct html).
In pagina html se citeste si afiseaza cu ajax la cateva secunde (20-30) direct datele din acel fisier text, astfel baza de date e accesata doar cand intra un nou utillizator.

vali911
PHPRomania Supporter
Mesaje: 8
Membru din: Joi Oct 06, 2011 11:28 am

Mesajde vali911 » Joi Oct 06, 2011 10:51 pm

merci MarPlo,kiar de la tine invat acum ajax,js....
dar scuze k nu am explicat exact ce-mi trebuie mie:
kiar imi trebuie la secunda

-ma gandeam k e vreo functie prin vreun limbaj ca sa faca urmatoarele:

-eu ca admin adaug in baza de date un "text" si dupa care vad ce useri sunt online si sa dau comanda xxx spre paginile lor si acestea sa se updateze(nu refresh)

Avatar utilizator
teachme
Senior Member
Mesaje: 550
Membru din: Mar Aug 17, 2010 11:52 am

Mesajde teachme » Vin Oct 07, 2011 5:01 pm

se poate face prin ajax.

iti faci un javascript care la X secunde incarca intr-o zona din site (un div sa zicem) continutul generat de un anumit fisier php.

textul pe care vrei sa-l afisezi utilizatorilor il introduci in baza de date.
fisierul php interogheaza baza de date, daca gaseste ceva ii face echo.

in momentul in care javascriptul incarca fisierul php, va afisa acel text utilizatorilor.

se poate face si fara a folosi baza de date. textul il vei pune direct in fisier.

vali911
PHPRomania Supporter
Mesaje: 8
Membru din: Joi Oct 06, 2011 11:28 am

Mesajde vali911 » Vin Oct 07, 2011 5:41 pm

pai da,dar
(1) daca am 1000 useri numai pe o pagina din 100pagini ale site-ului,
iar la fiecare secunda(ca asa imi trebuie) fiecare user "gadila" baza de date sa vada dak e ceva nou de afisat,ce mai face saracul server si netul?
-nici nu mai are timp sa mai raspunda la toti k deja se reia (1)

-ma gandeam la ceva de genul ca pagina userului sa aiba o "ceva" de genul=asteptare raspuns(cu noutati de la server)
-sau ceva de genul la messenger,sau mirc....(unul scrie ceva si imediat apare si la ceilalt ce a scris el)

Avatar utilizator
teachme
Senior Member
Mesaje: 550
Membru din: Mar Aug 17, 2010 11:52 am

Mesajde teachme » Vin Oct 07, 2011 6:28 pm

faci fara baza de date.
si atunci o sa gadili doar un fisier pe care-l accesezi la secunda, fisier in care tu iti vei scrie mesajul.
te poti folosi de php sa iti salveze in fisier mesajul catre ceilalti useri.

vali911
PHPRomania Supporter
Mesaje: 8
Membru din: Joi Oct 06, 2011 11:28 am

Mesajde vali911 » Dum Oct 09, 2011 11:18 am

ok,dar e problema acum k din html+ajax tre sa te conectezi la server k fisierul e pe server.
-acum din cate stii tu, e vreo problema daca la cei 1000 de useri pun sa se conecteze la server(o singura data pe pagina sau doar cand se logheaza) si nu inchid conexiunea(k sa nu stea mereu sa se conn-deconn la secunda) si asa acceseaza doar fisierul sa vada dak s-a modif lungimea sau data?

Avatar utilizator
teachme
Senior Member
Mesaje: 550
Membru din: Mar Aug 17, 2010 11:52 am

Mesajde teachme » Dum Oct 09, 2011 12:28 pm

evident ca daca ai hosting ieftin, la trafic mai mare o sa ai probleme.
dar nu trebuie sa fie la secunda. poti sa il setezi la 10 secunde.
sa zicem ca mesajul tau are vreo 50 bytes.
1000 useri x 50 bytes / 10sec = 5k/sec trafic
nu cred ca sunt probleme.

V8Li
Junior Member
Mesaje: 48
Membru din: Vin Ian 06, 2012 8:19 pm

Mesajde V8Li » Mie Ian 25, 2012 11:24 am

Pe tine te intereseaza daca poti sa faci asta: http://en.wikipedia.org/wiki/HTTP_persistent_connection . Ideea e ca asa cum o sa citesti nu prea mai merita... eu am facut un chat in AJAX cu jQuery, PHP si un .txt in 20 de minute doar sa vad cum merge ( eram mai multi in birou si nu aveam ce face :) ) si cea mai buna metoda ar fi sa "intrebi" serverul data ultimei modificari in fisier si sa compari cu o variabila pe care o setezi in JS. Daca faci refresh la 2 secunde (si e suficient zic eu) ar fi bine sa nu faci conexiune persistenta, la 500ms in jos da. Oricum citeste documentatia.

V8Li
Junior Member
Mesaje: 48
Membru din: Vin Ian 06, 2012 8:19 pm

Mesajde V8Li » Mie Ian 25, 2012 11:30 am

Mai uite si aici ceva destul de concret si asta ar fi varianta "profi": http://www.devshed.com/c/a/PHP/Socket-P ... -With-PHP/ . E cam greu, in mare daca ai un server care redirectioneaza pe TCP poti sa faci direct conexiune intre useri, prin serverul tau. Iti permiti mai multe atunci, de ex. cum face facebook cand vede ca celalalt user tasteaza :wink:


Înapoi la “Librarii Javascript”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 18 vizitatori