/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Distribueret session storage
Fra : Troels Arvin


Dato : 06-06-04 13:10

Hej,

Har nogen forsøgt sig med distribueret session-opbevaring i PHP?

Jeg kan selv komme i tanker om forskellige muligheder:

- Session gemmes som filer på NFS filsystem.
Ulemper:
- Jeg kender ikke lige til systemer, der kan
yde failover/replikering af NFS filsystemer.
- Måske fare for diverse race conditions.
- Session gemmes i DBMS.
Ulemper:
- Unødvendigt/ekstra load på DBMS.
- Svært at finde gode, billige replikeringssytemer/
failover mekanismer. (MySQL's replikering
foregår asynkront og er derfor uinteressant:
Jeg er interesseret i, at man efter en ændring
i en session er garanteret, at ændringen umiddelbart
er synlig i alle replika).
- Session gemmes via msession jvf.,
http://dk2.php.net/manual/en/ref.msession.php
Forekommer ret sej, men det er uklart for mig, om
man kan få messsion-dæmoner på flere hosts til at
koordinere ordentligt, og om man kan opbygge
failover funktionalitet på denne måde.
- Session gemmes via memcached, jvf.
http://www.danga.com/memcached/
Forekommer også sej (grundet dens indbyggede failover
logik), men memcached gemmer kun data i RAM,
hvorfor data vil være væk, hvis alle memcached
systemer går ned.

--
Greetings from Troels Arvin, Copenhagen, Denmark


 
 
Jesper Juul-Mortense~ (06-06-2004)
Kommentar
Fra : Jesper Juul-Mortense~


Dato : 06-06-04 20:52

On Sun, 06 Jun 2004 14:09:41 +0200, Troels Arvin <troels@arvin.dk>
wrote:

>Har nogen forsøgt sig med distribueret session-opbevaring i PHP?

Det kom desværre ikke længere end til tanken, men kommer du videre må
du meget gerne poste resultatet.

/Jesper

Mads Sülau Jørgensen (10-06-2004)
Kommentar
Fra : Mads Sülau Jørgensen


Dato : 10-06-04 09:14

Troels Arvin wrote:

> Har nogen forsøgt sig med distribueret session-opbevaring i PHP?

Jeg kiggede på det for ikke så lang tid siden, men har dog ikke taget
setuppet i brug endnu. Og det gør jeg heller ikke før jeg har fundet en
ordenlig måde at køre sessions på, hvilket i mine øjne er memcached da
jeg ikke tror at et filsystem kan følge med.

> - Session gemmes som filer på NFS filsystem.
> Ulemper:
> - Jeg kender ikke lige til systemer, der kan
> yde failover/replikering af NFS filsystemer.
> - Måske fare for diverse race conditions.

Som jeg har det kørende nu bruger jeg NFS til at gemme sessions på, og
det virker også fint nok, men er desværre ikke skalerbart* og efter min
mening ret langsomt.

*Altså hvis man ville kunne man godt lave en masse mounts i /mount/1,
/mount/2 osv. på forskellige hosts og sætte session.save_path til at
være "1;/mount/" så PHP bruger undermapper til at gemme og hente session
filerne i.

I stedet for NFS kunne man bruge måske AFS (http://www.openafs.org/) som
netop et er distribueret fil system, men som sagt hvis det skal gå
hurtigt ville jeg ikke vælge dette.

> - Session gemmes i DBMS.
> Ulemper:
> - Unødvendigt/ekstra load på DBMS.
> - Svært at finde gode, billige replikeringssytemer/
> failover mekanismer. (MySQL's replikering
> foregår asynkront og er derfor uinteressant:
> Jeg er interesseret i, at man efter en ændring
> i en session er garanteret, at ændringen umiddelbart
> er synlig i alle replika).

MySQL Cluster vil efter sigende kunne gøre det ret effektivt, men det er
lavet til 4.1 som stadig er i alpha.

> - Session gemmes via memcached

Jeg vil ikke mene at man bør gemme data i sessions der ikke kan overleve
at alle n servere går ned. Og at memcached derfor er den perfekte
løsning til at gemme sessions i.

--
Mads Sülau Jørgensen
"All glory to the hypno toad!"

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste