johjoh: Sessiondaten von anderen Sessions auslesen

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

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

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. 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

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
    2. 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

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

      --
      Zweck des Disputs oder der Diskussion soll nicht der Sieg, sondern der Gewinn sein.
      (Joseph Joubert, Schriftsteller)