PHP Session Timeout
am 11.10.2006 11:48:09 von Martin Kaffanke
Hallo!
Neben php verwende ich auch noch python scgi scripts. Ist ein User nun
länger auf Seiten unterwegs die lediglich auf die scgi scripts zugreifen,
so bekomme ich irgendwann bei den php scripts einen Session Timeout.
Wo wird der session timeout gesetzt? Im Cookie? Da meine scgi Scripts
die php session Datei /var/lib/php4/sess_* des Users manipuliert hat diese
eigentlich einen neuen Timestamp. Wie kann ich hier vorgehen, dass PHP
nicht irgendwann meint, die Session wäre ausgelaufen?
danke,
Martin
Re: PHP Session Timeout
am 11.10.2006 11:58:31 von thorny
Martin Kaffanke schrieb:
> Hallo!
>
> Neben php verwende ich auch noch python scgi scripts. Ist ein User nun
> länger auf Seiten unterwegs die lediglich auf die scgi scripts zugreifen,
> so bekomme ich irgendwann bei den php scripts einen Session Timeout.
>
> Wo wird der session timeout gesetzt?
Natürlich in der Konfiguration von PHP. Dort existiert der Eintrag:
session.cookie_lifetime
Welches die Lebeszeit eines Session-Cookies in Sekunden angibt.
Desweiteren gibt es noch diesen Eintrag:
session.gc_maxlifetime
Dieser besagt, nach wieviel Sekunden die gespeicherten Session-Daten auf
dem Server als Müll angesehen werden und vom GC entfernt werden.
GruÃ,
Torsten
Re: PHP Session Timeout
am 11.10.2006 14:17:25 von dev-null-use-reply-adress
Martin Kaffanke schrieb:
> Neben php verwende ich auch noch python scgi scripts.
Das dürfte hier mittlerweile bekannt sein. ;-)
> Ist ein User nun
> länger auf Seiten unterwegs die lediglich auf die scgi scripts zugreifen,
> so bekomme ich irgendwann bei den php scripts einen Session Timeout.
>
> Wo wird der session timeout gesetzt? Im Cookie? Da meine scgi Scripts
> die php session Datei /var/lib/php4/sess_* des Users manipuliert hat diese
> eigentlich einen neuen Timestamp.
Keine Ahnung ob das ausreicht. Allerdings hielte ich es für eleganter,
eigene Session-Handler-Funktionen zu schreiben, die Sessions dann z.B.
in einer Datenbank zu verwalten und dann in den Schlangen^Wpython-Scripts
analog zu verfahren.
http://de.php.net/manual/de/function.session-set-save-handle r.php
> Wie kann ich hier vorgehen, dass PHP
> nicht irgendwann meint, die Session wäre ausgelaufen?
Mit den entsprechenden Konfigurationsvariablen - sagte Thorsten ja bereits.
GruÃ
JPM
Re: PHP Session Timeout
am 11.10.2006 14:31:44 von Martin Kaffanke
Am Wed, 11 Oct 2006 11:58:31 +0200 schrieb Torsten Zuehlsdorff:
> Martin Kaffanke schrieb:
>> Hallo!
>>
>> Neben php verwende ich auch noch python scgi scripts. Ist ein User nun
>> länger auf Seiten unterwegs die lediglich auf die scgi scripts zugreifen,
>> so bekomme ich irgendwann bei den php scripts einen Session Timeout.
>>
>> Wo wird der session timeout gesetzt?
>
> Natürlich in der Konfiguration von PHP. Dort existiert der Eintrag:
> session.cookie_lifetime
> Welches die Lebeszeit eines Session-Cookies in Sekunden angibt.
Ja, das ist mir bekannt. Ist aber eine unsaubere Lösung.
> Desweiteren gibt es noch diesen Eintrag:
> session.gc_maxlifetime
> Dieser besagt, nach wieviel Sekunden die gespeicherten Session-Daten auf
> dem Server als Müll angesehen werden und vom GC entfernt werden.
Auch das ist mir bekannt. Wäre auch bloà ein workarround.
Die Frage ist: Wo speichert PHP, wann der letzte Zugriff war? In der
session datei nicht, zumindest nicht durch die mtime der datei. Im Cookie
auch nicht, soweit ich das beim lesen des Cookies sehen kann. Aber
irgendwo muss php doch wissen, wann der letzte Zugriff auf diese Session
stattgefunden hat.
Ein besseres Workarround wäre für mich eventuell, dass man beim scgi
script alle 5 Minuten (Hausnummer) ein PHP script mittels Status 307
Location /update_phpsession.php aufruft, welche mich dann wieder auf mein
scgi script zurückschickt.
Aber ich würds sonst gerne direkt im System lösen, wenns irgendwie geht.
Also beim Zugriff genau dort einen Update machen, wo PHP das auch macht.
lg,
Martin
Re: PHP Session Timeout
am 11.10.2006 14:41:52 von Claus Reibenstein
Martin Kaffanke schrieb:
> Wo wird der session timeout gesetzt? Im Cookie?
Du suchst session_set_cookie_params().
GruÃ. Claus
Re: PHP Session Timeout
am 11.10.2006 14:56:50 von thorny
Martin Kaffanke schrieb:
>>>Neben php verwende ich auch noch python scgi scripts. Ist ein User nun
>>>länger auf Seiten unterwegs die lediglich auf die scgi scripts zugreifen,
>>>so bekomme ich irgendwann bei den php scripts einen Session Timeout.
>>>
>>>Wo wird der session timeout gesetzt?
>>
>>Natürlich in der Konfiguration von PHP. Dort existiert der Eintrag:
>>session.cookie_lifetime
>>Welches die Lebeszeit eines Session-Cookies in Sekunden angibt.
>
> Ja, das ist mir bekannt. Ist aber eine unsaubere Lösung.
Warum?
>>Desweiteren gibt es noch diesen Eintrag:
>>session.gc_maxlifetime
>>Dieser besagt, nach wieviel Sekunden die gespeicherten Session-Daten auf
>>dem Server als Müll angesehen werden und vom GC entfernt werden.
>
> Auch das ist mir bekannt. Wäre auch bloà ein workarround.
Warum?
> Die Frage ist: Wo speichert PHP, wann der letzte Zugriff war?
Um konkreter zu werden: Warum schlägst du nicht im Handbuch nach? Vor
kurzem erst hast du dich als wahrer PHP-Experte dargestellt und jetzt
bist du nicht mal in der Lage, so etwas einfaches herauszufinden?
> In der
> session datei nicht, zumindest nicht durch die mtime der datei.
Das Handbuch sagt:
"Seit PHP 4.2.3 wird mtime (modified date) anstatt atime verwendet. Sie
werden also keine Problem mit Dateisystemen haben, bei denen atime nicht
zur Verfügung steht."
Ich glaube dem Handbuch mehr als dir.
> Ein besseres Workarround wäre für mich eventuell, dass man beim scgi
> script alle 5 Minuten (Hausnummer) ein PHP script mittels Status 307
> Location /update_phpsession.php aufruft, welche mich dann wieder auf mein
> scgi script zurückschickt.
Statt einem Workarround wäre eine sinnvolle Verwendung wohl die
einfachste Lösung...
GruÃ,
Torsten