Session-Dateien auf dem Server wieder loswerden
Thomas Schmieder
- php
Guten Abend,
nun wurde hier bei uns im Team den ganzen Tag mit Sessions experientiert und zu guter Letzt klappt das nun. Allerdings habe ich noch kein Konzept, wie man denn wohl die Sessions auf dem Server wieder los werden soll? Das tmp-Verzeichnis füllt sich langsam.
Kümmert sich PHP selber darum? Ich habe das was von einem Garbage Collector gelesen, aber wieß nicht wann und wie der gestartet wird.
Wann könnte man denn wohl sonst eine Session löschen? Nach einer Stunde? Oder besser erst nach einem Tag?
Grüße aus http://www.braunschweig.de
Tom
Hallo Thomas,
nun wurde hier bei uns im Team den ganzen Tag mit Sessions experientiert und zu guter Letzt klappt das nun. Allerdings habe ich noch kein Konzept, wie man denn wohl die Sessions auf dem Server wieder los werden soll? Das tmp-Verzeichnis füllt sich langsam.
*g* - das Problem kenne ich.
Kümmert sich PHP selber darum? Ich habe das was von einem Garbage Collector gelesen, aber wieß nicht wann und wie der gestartet wird.
Du gibts in der php.ini eine Warscheinlichkeit an (session.gc_probability glaube ich), wann der Check durchgeführt wird. Wenn Du jetzt session_start() machst, dann wird der Garbace Collector angeworfen, sofern der Zufallsgenerator gesagt hat, dass er anlaufen soll.
Bsp1: Der Wert in der php.ini steht auf 1 - dann wird jedes mal gechecked.
Bsp2: Der Wert in der php.ini steht auf 0.1 - dann wird jedes 10. mal gechecked.
etc.
Der GC überprüft, ob eine Session abgelaufen ist und löschst sie ggf.
Grüße,
Christian
Hallo,
nun wurde hier bei uns im Team den ganzen Tag mit Sessions experientiert und zu guter Letzt klappt das nun. Allerdings habe ich noch kein Konzept, wie man denn wohl die Sessions auf dem Server wieder los werden soll? Das tmp-Verzeichnis füllt sich langsam.
session_destroy()
Kümmert sich PHP selber darum? Ich habe das was von einem Garbage Collector gelesen, aber wieß nicht wann und wie der gestartet wird.
in der php.ini setzen:
session.gc_maxlifetime = Sekunden
MfG, Thomas
Hallo Thomas,
session_destroy()
danke für die Tipps. session_destroy() habe ich ausprobiert, das tut aber gar nix. Außerdem ist ja auch nicht sicherzustellen, dass die User sich abmelden.
Ich gedachte auch, mich mit session_destroy() "abmelden" zu können um dann im selben Browser eine neue Session beginnen zu können. Das scheint auch nicht zu funktionieren, oder es liegt mal wieder an der Cache-Strategie des Browsers, das ja das File nicht geändert wurde, sondern nur die Variablen, die angezeigt werden sollten. Da muss ich noch basteln.
Tom
Hi!
session_destroy()
danke für die Tipps. session_destroy() habe ich ausprobiert, das tut aber gar nix. Außerdem ist ja auch nicht sicherzustellen, dass die User sich abmelden.
Ich gedachte auch, mich mit session_destroy() "abmelden" zu können um dann im selben Browser eine neue Session beginnen zu können. Das scheint auch nicht zu funktionieren, oder es liegt mal wieder an der Cache-Strategie des Browsers, das ja das File nicht geändert wurde, sondern nur die Variablen, die angezeigt werden sollten. Da muss ich noch basteln.
Wie machst Du das denn genau? Wenn Du die Session löschst solltest Du direkt danach ein header-Weiterleitung machen, denn sonst hast Du ja noch Deine SessionID in den Scripten stehen und womöglich wird dann eien neue Session mit derselben ID erstellt, wobei ich mir das nicht vorstellen kann. Wenn Du eine Header-Weiterleitung machst, ohne die SessionID solltest Du auf der nächsten Seite auf keine Session-Daten mehr zugreifen können. Vielleicht liegt es auch daran dass der Browser noch den Cookie gespeichert hat? Vielleicht kann man den ja auch löschen.
Man sollte Session-Daten meines Wissens mit unlink ($_SESSION) löschen, das könnte vielleicht besser funktionieen. Und wenn alle Stricke reißen hilft Dir vielleicht
http://www.dclp-faq.de/q/q-sessions-loeschen.html
Grüße
Andreas
Guten Abend,
dito.
nun wurde hier bei uns im Team den ganzen Tag mit Sessions experientiert und zu guter Letzt klappt das nun. Allerdings habe ich noch kein Konzept, wie man denn wohl die Sessions auf dem Server wieder los werden soll? Das tmp-Verzeichnis füllt sich langsam.
das scheint logisch, wenn ihr die Sessions nicht löscht. Zum einen möchte ich mich Christian anschließen, zum anderen etwas anderes vorschlagen: Ich kenne ja das Problem bei euch und da ist es ganz offensichtlich, dass man ein "Logout" einbauen kann. Da werden die Dinger gelöscht, ist gleichzeitig auch sicher. Alternativ bzw- ergänzend würde ich mit einem Cronjob noch nach nicht "ausgeloggten" Sessions suchen lassen, z.B. wenn eine Session nach 10 min nicht mehr angerührt wurden, und die auch löschen lassen. Oder eben beim neuen Login prüfen, ob es alte Session-Daten gibt. Dann ist's aber etwas spät ;-)
Kümmert sich PHP selber darum? Ich habe das was von einem Garbage Collector gelesen, aber wieß nicht wann und wie der gestartet wird.
Wann könnte man denn wohl sonst eine Session löschen? Nach einer Stunde? Oder besser erst nach einem Tag?
wenn sie nicht mehr gebraucht wird IMO.
Grüße aus http://www.braunschweig.de
Tom
Fabi
[scnr ;P]