Tom: Am SESSION-Ende etwas ausführen

Beitrag lesen

Hello,

Gibt es eine Möglichkeit, bei einem erzwungenen  SESSION-Ende noch etwas auszuführen???

Hier muss man mehrere Dinge unterscheiden:

  • Die Session
  • Die Lebensdauer der Sessiondatei
  • Die Laufzeit des Scriptes

Die Lebensdauer der Sessindatei sollte selbstverständlich immer mindestens so lang sein, wie die Session. Sie hat aber mit der Gültigkeit der Session nichts zu tun. Die Gpltigkeit der Session kann man in einer separaten Funktion z.B. in der Datenbank verwalten.

Da es bei Sessions immer um Zeiträume von mehreren Minuten und nicht um Millisekunden handelt, würde ich den Speicher auch an den GC koppeln. Bei PHP auf Debian 4.0 ist das recht einfach, denn dort wird der GC mit einem Cronjob bedient. man muss sich also nur mit einem Script in diesen Cronjob einklinken. Ich würde eine separate Tabelle führen, in der der shared memory unter der Sessionnummer eingetragen ist. Du musst Du ja sowieso irgendwo die SystemID für den Block merken...

Wenn dann der GC-Job läuft, kann er feststellen, zu welchem Eintrag keine Sessiondatei mehr vorhanden ist und ihn wieder freigeben.

Wenn Du mit dem PHP-eigenen GC arbeitest, weiß ich leider (noch) nicht, wo  amn erlaubterweise eingreifen könnte.

http://de2.php.net/manual/en/function.shmop-open.php

Lies dir aich http://de2.php.net/manual/en/ref.session.php nochmal durch.
Speziell den Hinweis über http://www.ossp.org/pkg/lib/mm/

Liebe Grüße

Tom vom Berg

--
Nur selber lernen macht schlau