Balazs: Frage bez. Sessions/Objekte/Ressourcen

hallo,

ich überarbeite grad mein Kalendersystem http://phpmycalendar.sourceforge.net/, und habe das ganze objektorientiert neu geschrieben. Nun steh ich vor dem Problem, dass ich einzelne Objekte an andere Seiten übergeben möchte. Ich habe es mit

$s=serialize($meinObjekt);

versucht, klappt auch, aber wenn ich $s an die URL anhänge, kommt $s nur teilweise auf der nächsten Seite an.

Ich habe bei Sessions gelesen, dass diese Objekte speichern können, und man auf anderen Seiten auf sie zugreifen kann. Jetzt ist aber meine Frage: wie werden Sessions php-intern behandelt?

  • Wird ein gewisser Speicherbereich für diese reserviert, und erst wieder freigegeben, wenn die jeweilige Session beendet ist?
  • Wie wirkt sich es aus, wenn die Seiten mit den offenen Sessions stundenlang angezeigt werden, und womöglich hunderte dieser Sessions existieren, da hunderte User diese Seiten betrachten (mit den jeweiligen, für den User relevanten Infos)?

ich möchte das ganze so schreiben, dass möglichst viele User den Kalender verwenden können, ohne dass der Server drunter "zusammenbricht".

danke mal im voraus,
viele Grüße,
Balazs

  1. Tach

    Ich habe bei Sessions gelesen, dass diese Objekte speichern können, und man auf anderen Seiten auf sie zugreifen kann. Jetzt ist aber meine Frage: wie werden Sessions php-intern behandelt?

    • Wird ein gewisser Speicherbereich für diese reserviert, und erst wieder freigegeben, wenn die jeweilige Session beendet ist?

    Die Session wird als Datei sess_SESSIONID in dem in der php.ini definierten Verzeichnis abgelegt, das meistens /tmp ist.

    • Wie wirkt sich es aus, wenn die Seiten mit den offenen Sessions stundenlang angezeigt werden, und womöglich hunderte dieser Sessions existieren, da hunderte User diese Seiten betrachten (mit den jeweiligen, für den User relevanten Infos)?

    Die Session ist soweit ich weiß nur für die Zeit, in der der PHP-Parser die Seite bearbeitet im Speicher. Sonst existiert die Session nur in Form besagter Datei auf der Festplatte. Und wenn die Datei in /tmp liegt, dann nimmst sie nach einer gewissen Zeit der Müll-Aufsammel-Prozess des Betriebssystems mit.

    ich möchte das ganze so schreiben, dass möglichst viele User den Kalender verwenden können, ohne dass der Server drunter "zusammenbricht".

    Sollte kein Problem sein. Soweit ich weiß, kannst Du PHP aber auch dazu bringen, die Session in einer Datenbank zu speichern, wenn Du keine Lust hast, daß hunderte (eher tausende) von Dateien in einem Verzeichnis herumliegen.

    Ciao,

    Harry
     (alle Angaben ohne Gewähr ;)

    1. hi auch,

      Die Session ist soweit ich weiß nur für die Zeit, in der der PHP-Parser die Seite bearbeitet im Speicher. Sonst existiert die Session nur in Form besagter Datei auf der Festplatte. Und wenn die Datei in /tmp liegt, dann nimmst sie nach einer gewissen Zeit der Müll-Aufsammel-Prozess des Betriebssystems mit.

      das klingt mal brauchbar. ich verwende Linux als Webserver - kann man irgendwo erfahren, wann / wie oft die Garbage-Collection die Daten löscht?

      danke,
      Balazs

  2. Hallo,

    versucht, klappt auch, aber wenn ich $s an die URL anhänge, kommt $s nur teilweise auf der nächsten Seite an.

    wahrscheinlich liegt das daran, dass Du mit der URL einen Get request machst. Probier mal stattdessen post zu verwenden, vielleicht mit einem unsichtbaren formularfeld.

    Gruss

    Marko

    1. Hallo,

      wahrscheinlich liegt das daran, dass Du mit der URL einen Get request machst. Probier mal stattdessen post zu verwenden, vielleicht mit einem unsichtbaren formularfeld.

      ich hänge die Daten wie folg an die URL: datei.php?meinObjekt=$s
      kann ich hier auch die Request-Methode steuern, ob sie GET oder POST ist? Unsichtbare Formularfelder kann ich leider nicht brauchen...:(

      danke,
      Balazs