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