| 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 |
|
| |