Session-Konfigurationsvariablen
cayaphas
- php
tach,
es geht bei mir um ein grundsätzliches verständnisproblem bei den Session Einstellungen.
Ich hab hier schon viel gesucht, aber nirgends ne genaue Erklärung der Session Konf-Variablen erhalten (oder bring die einzelnen Dinger durcheinander).
So hab ichs verstanden:
session.cookie_lifetime:
solange ist der Cookie gültig auf dem Client System (wer setzt ihn ungültig?, das Client System (durch löschen oder sonstwas?) oder der Server der ihn übermittelt bekommt und dann sagt er ist ungültig aufgrund des timestamps des cookies?)
session.cache_expire:
nach dieser Zeit wird die session aus dem Server-cache genommen, und das heisst doch die Session ist auf dem Serversystem abgelaufen, oder?
session.gc_maxlifetime:
Zeit, nach der eine GarbageCollection stattfindet (mit einer wahrscheinlichkeit, festgelegt von gc_divisor und gc_probability) .. oder?
Hier heisst Garbage Collection doch komplett alle Daten der Session, und somit auch die Session selbst, oder?
Ich hab mit diesen Variablen rumgespielt, aber trotz gesetzter Werte (in der php.ini) krieg ich z.B. kein automatisches Session-Timeout zustande (z.B. nach 1 minute). Ich arbeite hier mit nem Apache 4.3.8 unter XP, und da bin ich mir auch nicht sicher ob alles korrekt funktioniert.
Ich hab gesehen, dass es bei älteren PHP Versionen bestimmte Probleme gibt (zwecks FAT und atime), aber das sollte bei dieser Version doch eigentlich gehen. (das nächste bei dem ich mir unsicher bin)
Ich möchte letztlich nur sowas machen, wie nem Eingeloggten User zu sagen, nach wieviel Minuten "Untätigkeit" seine Session abläuft, und will ich einfach nur die korrekten PHP Session Einstellung auslesen, (egal auf welchem Server). Aber da hängts halt dann, wenn ich die Einstellungen nicht genau verstanden habe.
Ich habe wirklich das PHP Manual durchsucht und das Forum, hab aber nirgends ne für mich zufriedenstellende Erklärung gefunden, und da es bei mir nicht funktioniert, konnte ich es auch nicht testen.
Wäre cool wenn mir jemand kurz weiterhelfen kann.
Gruss
caya
hi,
session.cookie_lifetime:
solange ist der Cookie gültig auf dem Client System (wer setzt ihn ungültig?, das Client System (durch löschen oder sonstwas?)
Der Client trifft die Entscheidung, dass der Cookie zum Zeitpunkt X nicht mehr gültig ist. Wie er das dann handhabt, ob er ihn sofort " löscht" oder sonstwas, bleibt a) ihm überlassen und ist b) vollkommen uninteressant.
oder der Server der ihn übermittelt bekommt und dann sagt er ist ungültig aufgrund des timestamps des cookies?)
Nein, wenn der Cookie abgelaufen ist, übermittelt der Client ihn gar nicht mehr an den Server. Und einem Timestamp schickt er m.W. sowieso nicht mit.
Das gilt übrigens generell für Cookies, und ist nicht Session-spezifisch.
session.cache_expire:
nach dieser Zeit wird die session aus dem Server-cache genommen, und das heisst doch die Session ist auf dem Serversystem abgelaufen, oder?
Nein, diese Einstellung gibt an, mit welchen Angaben zur Gültigkeit der Server die Ressource ausliefern soll, sprich wie lange ein Client sie bei erneuter Anforderung durch den Nutzer ggf. aus seinem Cache holen darf.
session.gc_maxlifetime:
Zeit, nach der eine GarbageCollection stattfindet (mit einer wahrscheinlichkeit, festgelegt von gc_divisor und gc_probability) .. oder?
Nein, umgekehrt: Die Zeitspanne, vor deren Ablauf der Garbage Collector diese Session auf keinen Fall entsorgen darf.
Hier heisst Garbage Collection doch komplett alle Daten der Session, und somit auch die Session selbst, oder?
Garbage Collection heißt hier das löschen der physischen Session-Datei auf dem Server, in der die Session-Daten abgelegt sind.
Ich hab mit diesen Variablen rumgespielt, aber trotz gesetzter Werte (in der php.ini) krieg ich z.B. kein automatisches Session-Timeout zustande (z.B. nach 1 minute).
Wirst du damit auch nicht.
Ich möchte letztlich nur sowas machen, wie nem Eingeloggten User zu sagen, nach wieviel Minuten "Untätigkeit" seine Session abläuft, und will ich einfach nur die korrekten PHP Session Einstellung auslesen, (egal auf welchem Server). Aber da hängts halt dann, wenn ich die Einstellungen nicht genau verstanden habe.
So etwas kannst du an den angesprochenen Einstellungen gar nicht festmachen.
Die Session selber läuft nicht unbedingt zum Zeitpunkt X ab.
gruß,
wahsaga
tach,
So etwas kannst du an den angesprochenen Einstellungen gar nicht festmachen.
Die Session selber läuft nicht unbedingt zum Zeitpunkt X ab.
ach so .. ok, dann wird mir einiges klarer, das heisst wenn ich ein Timeout erzwingen will, muss ich mir sowas wie einen eigenen Zeitstempel setzten, und dann bei jedem Sessionaufruf abfragen, wie lange dieser schon her ist ...und gegebenenfalls die Session löschen und den User Informieren bzw. auf das Login-Skript weiterleiten.
Hab ich also richtig verstanden, dass ich durch das Auslesen der Session-Konfiguration maximal sowas wie eine "Frühest-Mögliches-Timeout" erfahren kann?
gruss
caya
Moin!
So etwas kannst du an den angesprochenen Einstellungen gar nicht festmachen.
Die Session selber läuft nicht unbedingt zum Zeitpunkt X ab.ach so .. ok, dann wird mir einiges klarer, das heisst wenn ich ein Timeout erzwingen will, muss ich mir sowas wie einen eigenen Zeitstempel setzten, und dann bei jedem Sessionaufruf abfragen, wie lange dieser schon her ist
Richtig!
PHP löscht, wenn die Session nach Ansicht von PHP ausreichend "alt" ist, die gespeicherten Sessiondaten in der Datei. Die Prüfung, welche der Dateien zu alt ist, geschieht mit dem Wahrscheinlichkeitsfaktor bei jeden Skriptaufruf (oder - da bin ich jetzt nicht 100% sicher - auch nur bei jedem Aufruf von session_start() ).
Das bedeutet: Du auf deinem Testsystem mußt grob geschätzt mindestens 100 Skriptaufrufe machen, bevor eine zu alte Session mit einigermaßen hoher Wahrscheinlichkeit gelöscht wird. Wenn du der einzige Benutzer bist, kann das schon mal dauern.
Deshalb mußt du einen eigenen Mechanismus einbauen, der den Zeitablauf der Session absolut sicher im Griff hat und bei Zeitüberschreitung garantiert faßt.
Hab ich also richtig verstanden, dass ich durch das Auslesen der Session-Konfiguration maximal sowas wie eine "Frühest-Mögliches-Timeout" erfahren kann?
Richtig. Im Prinzip sollte dich die Einstellung der PHP-Sessions gar nicht wirklich interessieren. Du müßtest sie dann ändern, wenn PHP selbst die Sessiondaten zu früh löscht. Aber Standardwert für die Mindestlebensdauer der Sessiondatei ist IIRC eine Stunde - kombiniert mit der Wahrscheinlichkeit kann eine Datei aber auch wesentlich länger überleben.
- Sven Rautenberg
hi,
Aber Standardwert für die Mindestlebensdauer der Sessiondatei ist IIRC eine Stunde
Nicht ganz, Default sind 1440 Sekunden, also 24 Minuten.
gruß,
wahsaga
Hello,
session.gc_maxlifetime:
Die müsste eigentlich session.gc_minlifetime heißen, weil sie die Mindest-Lebensdauer für die Session-Basis kennzeichnet.
Zeit, nach der eine GarbageCollection stattfindet (mit einer wahrscheinlichkeit, festgelegt von gc_divisor und gc_probability) .. oder?
Hier heisst Garbage Collection doch komplett alle Daten der Session, und somit auch die Session selbst, oder?
Die Sessiondatei wird entfernt
Ich hab mit diesen Variablen rumgespielt, aber trotz gesetzter Werte (in der php.ini) krieg ich z.B. kein automatisches Session-Timeout zustande (z.B. nach 1 minute). Ich arbeite hier mit nem Apache 4.3.8 unter XP, und da bin ich mir auch nicht sicher ob alles korrekt funktioniert.
Ob eine Session gültig ist, oder nicht und ob der User z.Zt. angemeldet ist, solltem an auch über eine zusätzliche Schicht z.B. mit Hilfe einer Datenbank klären. Ich hatte hierzu neulich erst einen Thread verfasst. Sven Rautenberg hat das Thema dann einige Tage späte nochmal aufgegriffen. Es müsste also reichlich Stoff zu finden sein im Archiv
Ich möchte letztlich nur sowas machen, wie nem Eingeloggten User zu sagen, nach wieviel Minuten "Untätigkeit" seine Session abläuft, und will ich einfach nur die korrekten PHP Session Einstellung auslesen, (egal auf welchem Server). Aber da hängts halt dann, wenn ich die Einstellungen nicht genau verstanden habe.
Das wurde in dem Thread erläutert.
suche nach: "category:php author:Tom Session"
Da muss was dabei sein.
http://forum.de.selfhtml.org/archiv/2006/4/t127274/#m821703
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom