Wo werden die Daten während einer Session aufbewahrt?

  • Hallo :)


    Ich frage mich gerade wo eigentlich die Daten einer Session aufbewahrt werden, während ein User auf einer Webseite ist? Es wird ja automatisch eine Session Datei angelegt, wenn man eine Session startet. Fügt man Daten hinzu, sind diese für die Dauer des Besuchs verfügbar.


    Werden nun sämtliche Session Daten zusätzlich im Speicher gehalten (bis der User die Seite verlässt), oder werden die Daten nur in die Datei geschrieben und bei Bedarf wieder ausgelesen?
    Man kann ja auch den GC Timer einstellen, wie lange eine Session Datei auf dem Server erhalten bleiben soll, also müssen ja so oder so sämtliche Session Daten in die Datei geschrieben werden. Google hat auf die Schnelle nichts ausgespuckt und auch in der Doku steht nichts konkretes. :confused:

  • Hallo rewboss,


    das die Daten sich in der Datei befinden ist klar. Ich frag' mich nur, ob sie ausschließlich in der Datei stehen oder, für die Dauer des Sitebesuchs, ebenso auch im Arbeitsspeicher gehalten werden - quasi doppelt vorhanden sind, für schnelleren Zugriff.
    Letzteres wäre schneller aber nicht gerade Resource schonend. Nur aus Datei würde die Hardware stärker belasten, weil man wesentlich mehr Festplattenzugriffe hätte.


    Gruß Andreas

  • Ich vermute mal im Arbeitsspeicher.. Was natürlich das Memory Limit belastet..

    Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
    -Dieter Nuhr
    :D

  • Was spielt das also für eine Rolle, wie der Server mit den Daten umgeht? Hauptsache er hat sie.


    Ich vermute mal im Arbeitsspeicher.. Was natürlich das Memory Limit belastet..


    Andreas beantwortet es quasi im 2. Teil seiner Antwort. Bei Miet-Webspace hat man für gewöhnlich nicht Speicher satt, sondern oft sind es nur wenige MB (2-8 MB). Hat man jetzt relativ viele Besucher und arbeitet intensiv mit Sessions, in denen man u.U. auch mal längere Texte ablegt (etwa von mehrseitigen Formularen), könnte es schnell eng werden im Speicher, wenn die Daten wirklich permanent im Speicher gehalten würden.


    Im Prinzip sehe ich das ja wie Steffen (Hauptsache der Server hat sie), aber es hat mich eben mal interessiert. ;)



    @ rewboss
    Es geht nicht um kurz in den Speicher einlesen, sondern ob die kompletten Session Daten permanent im Speicher gehalten werden, solange ein Benutzer auf der Seite ist.

  • selbst wenn Du es weisst, Einfluss darauf hast Du nicht.


    Du siehst es aber richtig, man sollte nicht einfach alles in Sessions ablegen, das frisst Speicher. Ausserdem sollte man sich beim Sessionhandling bewusst machen, das das öffnen eines neuen Fensters nicht die Sessiondaten übernimmt, also ist das Vertrauen auf Sessiondaten nicht immer berechtigt.

  • Hat man jetzt relativ viele Besucher und arbeitet intensiv mit Sessions, in denen man u.U. auch mal längere Texte ablegt (etwa von mehrseitigen Formularen), könnte es schnell eng werden im Speicher, wenn die Daten wirklich permanent im Speicher gehalten würden.


    Richtig. Und wenn das der Fall ist, werden die Daten ausgelagert -- bzw. sie sind schon ausgelagert (die Datei existiert schon), werden also aus dem Arbeitsspeicher gelöscht, um Platz zu machen: dann werden sie wieder von der Festplatte eingelesen, wenn sie wieder benötigt werden.

  • Bin zwar hier nicht der php Guru. Zumindest habe ich gelernt, das für jeden User eine Datei auf dem Server angelegt wird. Dies bedingt wohl jedoch bestimmte Servereinstellungen. In der php.ini auf dem Server sollte [FONT=courier,courier new,fixed]session.auto_start[/FONT] auf 1 stehen. Dann einen Neustart mittels apachectl reload durchführen.


    Rufe ich eine neue Seite (auf dem selben Server) auf werden nicht immer die Session-Daten mit übergeben. Diese leidliche Erfahrung hat mich bereits einige Stunden Kopfzerbrechen bereitet. Sicherheitshalber habe ich daher die Usereingaben mit [FONT=courier,courier new,fixed]$_SESSION['variablenname'] = wert;[/FONT] abgespeichert. Brauche ich diese wieder, lese ich diese wieder aus mit [FONT=courier,courier new,fixed]$auslesewert=$_SESSION['variablenname'][/FONT]


    Aber wie schon angemerkt kann man dort nicht unbegrenzt Daten abspeichern. Ich meine mal was von max. 48 KB gelesen zu haben. Leider habe ich nicht mehr den Link dazu.

    Gruß HMV