Sessiondaten von anderen Sessions auslesen
johjoh
- php
Guten Morgen,
ich versuche gerade ein Ajax-Experiment zu realisieren, bei dem ich serverseitig die Performance verbessern muss. Es kommen sehr viele Post-Requests (bis zu 100 pro Sekunde) von verschiedenen Usern, die jeweils nur wenig Daten enthalten. Diese muss ich zwischenspeichern und dann einmal pro Sekunde verarbeiten. Da Session-Daten meines Wissens im Speicher des Servers gehalten werden, würde ich die Daten gerne in Sessionvariablen abspeichern, um die Performance zu verbessern und nicht 100 Datenbank Zugriffe pro Sekunde abarbeiten zu müssen.
Ist es in PHP möglich auf andere Sessions zuzugrifen oder was passier, wenn alle User die gleiche Session kriegen und unterumständen zwei Requests gleichzeitig laufen?
Gruß,
Johannes
Hi,
Da Session-Daten meines Wissens im Speicher des Servers gehalten werden,
Werden sie nicht, jedenfalls nicht per Default - PHP speichert die Daten auf Platte ab, für jede Session eine eigene Datei. Der Session-Handler lässt sich aber umkonfigurieren auf andere Ablageorte und -Systeme.
Ist es in PHP möglich auf andere Sessions zuzugrifen
Wenn die Session-ID bekannt wäre, dann problemlos. Da sie es i.a.R. nicht ist, müsste man dann alle anderen Sessions "scannen", also bei dateibasierter Speicherung bspw. alle Session-Dateien aus dem jeweiligen Verzeichnis auslesen.
Man kann allerdings die Session-ID auch fest vorgeben, anstatt PHP eine zufällige erzeugen zu lassen. Dann nutzen alle Clients, die diese Session-ID mitschicken, die selbe Session.
oder was passier, wenn alle User die gleiche Session kriegen und unterumständen zwei Requests gleichzeitig laufen?
Das gleiche, als wenn von nur einem Nutzer zwei Requests "gleichzeitig" eintreffen - einer von beiden muss warten, bis das Locking durch den anderen wieder aufgehoben ist.
Vielleicht ist Shared Memory für dich interessant(er)?
MfG ChrisB
Hello,
Ist es in PHP möglich auf andere Sessions zuzugrifen
Wenn die Session-ID bekannt wäre, dann problemlos. Da sie es i.a.R. nicht ist, müsste man dann alle anderen Sessions "scannen", also bei dateibasierter Speicherung bspw. alle Session-Dateien aus dem jeweiligen Verzeichnis auslesen.
Das interessiert mich jetzt mal von der Entwurfstheorie her:
Wenn man dieses tolle MVC-Konzept konsequent einhalten will, welche Daten gehören dann in die Session-Datei, und welche Daten muss man anderswo ablegen?
Dass ich MVC für Webanwendungen für unfähig halte, habe ich ja schon gesagt ;-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Vielleicht ist Shared Memory für dich interessant(er)?
ja, das scheint das richtige zu sein, danke. und es ist sogar auf meinem webhosting-paket bei hosteurope verfügbar. ich frag mich allerdings, wie groß die segmente da sein dürfen. bei mir wären es so 300 Kbyte. und wie lange die halten und so, dazu habe ich im php-manual nichts gefunden.
gruß, johannes
Hi,
Vielleicht ist Shared Memory für dich interessant(er)?
IMHO falscher Link.
Daß die Sessiondaten im Shared Memory abgelegt werden kann man einfach zur Laufzeit definieren:
ini_set('session.save_handler','mm');
(voreingestellt ist 'files'.)
Gruß, Cybaer