Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Shared session
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Mie Ian 11, 2006 6:58 pm    Titlul subiectului: Shared session  

Am o intrebare de 10 puncte :):
Cum s-ar implementa in PHP o chestie de genul "Application" din ASP.NET? "Application" am inteles ca e un fel de sesiune comuna intre toti utilizatorii unei aplicatii / script.

Momentan folosesc o baza de date ca mod de legatura intre utilizatori si o interoghez la fiecare secunda, cu AJAX. Mi-ar placea daca as putea implementa un fel de sesiune comuna intre utilizatorii aplicatiei - pentru a evita drumurile la baza date.

M-am uitat la membri statici. Sa fie asta raspunsul la intrebarea mea de 10 puncte? Cum s-ar implementa o chestie de genul: user #1 vine si salveaza o valoare intr-o variabila; user #2 are acces la acea variabila (cu valoarea pusa de user #1) la urmatoarea executie a script-ului.
:?:
Sus  
arhimede



Data înscrierii: 05/Dec/2005
Mesaje: 13

Trimis: Mie Ian 11, 2006 7:03 pm    Titlul subiectului:  

incearca sa folosesti shared memory( daca ai compilat php-ul cu asa ceva), stabilesti o zona in care scrii si citesti, si tii acolo variabile si ce vrei tu , va fi comun la toti userii... Din pacate , va fi accesibila la toate php-urile care ruleaza pe respectivul server, daca stiu adresa la care ai scris...
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Mie Ian 11, 2006 7:05 pm    Titlul subiectului:  

Da, am vazut si metoda cu shared memory, insa nu ma prea tenteaza. Nu e foarte elegant asa. Iar cei cu server web pe Windows mai vechi de 2000 nu pot folosi facilitatea asta. As vrea sa poata si ei...
Merci de idee, totusi!
Sus  
Pirahna



Data înscrierii: 22/Aug/2004
Mesaje: 4530
Locație: la birou

Trimis: Mie Ian 11, 2006 8:02 pm    Titlul subiectului:  

hmm ... incearca sa le scrii intr-un fisier ...

dar tot dracul ala e ...
baza de date , fisier ...

hmm ...
sesiune comuna , ajax ...
hmm ...

noah , problema ta e UNDE stochezi variabila ...
ca variante ai bd , memorie , fisiere ...

noah ... singurul cuvant care imi vine in cap in momentul asta legat de intrebarea ta de 10 puncte e : cache ...
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Mie Ian 11, 2006 8:16 pm    Titlul subiectului:  

Cu baza de date merge, dar ajunge sa fie incet in anumite cazuri. Fisiere... tot aia :P. Shared memory ar putea fi, dar cum zicea si arhimede, tre' sa fie compilat PHP-ul cu suport pentru asta.
Cache? Comun?
Sus  
whooper



Data înscrierii: 05/Apr/2005
Mesaje: 727
Locație: Toronto ON

Trimis: Mie Ian 11, 2006 10:33 pm    Titlul subiectului:  

http://www.phpbuilder.com/snippet/detail.php?type=snippet&id=596

http://www.phpbuilder.com/snippet/detail.php?type=snippet&id=382

si in final ..

http://www.phpbuilder.com/snippet/detail.php?type=snippet&id=259

Am 10 puncte ?
Sus  
arhimede



Data înscrierii: 05/Dec/2005
Mesaje: 13

Trimis: Mie Ian 11, 2006 10:46 pm    Titlul subiectului:  

Pai nu prea ai 10 puncte, una foloseste shared memory , care e intradevar cea mai buna metoda, insa are o gramada de conditii ( merge numa pe linux si numai daca e compilat php-ul cu modulul respectiv) , a doua e cu fisier , ceea ce la incarcare mare iar e nasol( daca iti stau 200 de useri deodata la rind sa citeasca /scrie ) in fisier, etc.
Da oricum, o solutie simpla si perfecta nu este la problema asta, poate s-o baga in php7
Sus  
whooper



Data înscrierii: 05/Apr/2005
Mesaje: 727
Locație: Toronto ON

Trimis: Mie Ian 11, 2006 11:24 pm    Titlul subiectului:  

Intrebarea era : " Cum s-ar implementa in PHP o chestie de genul "Application" din ASP.NET? " .. deci eu consider ca pentru asta primesc puncte :)


In cazul aplicatiei cu baze de date tot nu m-am prins pentru ce trebuie sa-i faca refresh la informatie in fiecare secunda ..

In mod normal, faci refresh cand vrei sa folosesti ceva de acolo. Mi-a trebuit asa ceva pentru un "auction site" .. unde tuturor userilor le trebuia aratat timpul in care o licitatie era valida (impreuna cu poza, specificatiile produsului si countdown-ul la secunda). Eu am implementat time-countere in JS initializate cu data/ora de pe server in momentul incarcarii paginii. Nu-ti trebuie timpul exact cand citesti specificatii, dar trebuie sa ai ceva in niste limite rezonabile cand vrei sa licitezi. Pentru ca poti avea oarecare intarzieri in transmitere, am considerat ca un delay de 5 secunde este optim .. asa ca toate "bid"-urile din ultimile 5 secunde prelungeau automat durata de viata a licitatiei respective, dand ocazia celor care aveau de gand sa faca ceva .. sa apese pe butoanele respective.

Spuneai de fisierul ala si cei 200 de useri simultani .. si ipotetici. Cateodata nu trebuie sa omori nici serverele SQL cu 200 de query-uri la secunda, doar pentru a afisa niste date care pot sau nu pot sa fie de interes egal pentru toti utilizatorii. Procesul modelat in aplicatia pe care o vrei, sigur permite o oarecare flexibilitate, iar orice aplicatie distribuita TREBUIE sa fie flexibila conform proceselor modelate.

:) Succese.
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Joi Ian 12, 2006 9:31 am    Titlul subiectului:  

Buna interventie!
Ceea ce vreau eu sa fac eu un joc de carti, multiplayer (si, evident, mai multe jocuri sa ruleze in acelasi timp), AJAX-based (deci fara refresh de pagina).
In baza de date stochez mersul jocului: de exemplu, la inceputul fiecarei ture, fiecare jucator pune o carte - ei bine, cartea pe care o pune jucatorul se salveaza in baza de date si, instant apare la toti ceilalti utilizatori ca jucatorul X a pus pe masa cartea Tz. :) Scopul jocului este de a fi un proof of concept.

Aplicatia e aproape terminata, cu baza de date ca mod de legatura intre jucatori si cu request-uri asincrone catre server la fiecare secunda.
Sus  
Troto



Data înscrierii: 29/Iun/2004
Mesaje: 249
Locație: Brasov

Trimis: Mie Feb 22, 2006 12:01 am    Titlul subiectului:  

Nu am incercat, e posibil sa spun prostii si sa nu mearga, dar incearca sa folosesti o sesiune comuna pentru toti userii folosind session_name()
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Mie Feb 22, 2006 2:36 am    Titlul subiectului:  

Nu prea cred:
"session_name() returns the name of the current session. If name is specified, the name of the current session is changed to its value."
Sus  
carco



Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti

Trimis: Mie Feb 22, 2006 8:07 am    Titlul subiectului:  

S-a spus cam tot ce era de spus dar vreau sa mai pun si eu un pai.
In loc de fisiere sau tabele obisnuite, ai putea folosi o tabela distincta (una pt. fiecare joc) cu TYPE=MEMORY. Asta ti-ar aduce un mic spor de performanta la interogari (eventual folosesti si conexiuni persistente). Cu alte cuvinte dai putin mai tare (il soliciti mai mult) in server ca sa obtii ceva mai multa performanta pe partea de client.
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Mie Feb 22, 2006 8:40 am    Titlul subiectului:  

Crezi ca ar fi mai avantajos asa? Poate voi face un benchmark pe ambele metode. Merci de idee!
Sus  
pathFinder



Data înscrierii: 09/Mar/2006
Mesaje: 30

Trimis: Sâm Mar 11, 2006 1:22 am    Titlul subiectului:  

Pirahna a scris: hmm ... incearca sa le scrii intr-un fisier ...

dar tot dracul ala e ...
baza de date , fisier ...

hmm ...
sesiune comuna , ajax ...
hmm ...

noah , problema ta e UNDE stochezi variabila ...
ca variante ai bd , memorie , fisiere ...

noah ... singurul cuvant care imi vine in cap in momentul asta legat de intrebarea ta de 10 puncte e : cache ...

noah ... du-te ba..
Sus  
coditza



Data înscrierii: 23/Ian/2004
Mesaje: 298
Locație: cluj-napoca

Trimis: Mar Mar 21, 2006 3:29 pm    Titlul subiectului:  

http://ro2.php.net/apc
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community