Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2008 Teil von März

SELFHTML Forumsarchiv
Am SESSION Ende etwas ausführen

Informationsseite
  1. Seite (PHP) Am SESSION Ende etwas ausführen von Session-heini, 29. 03. 2008, 21:17
nach unten

Am SESSION Ende etwas ausführen

Die folgende Nachricht zum Thema stammt von: Session-heini, 29. 03. 2008, 21:17

Hallo,

ich schreibe zu Beginn einer SESSION etwas ins Shared Memory (zum Austausch mit anderen SESSIONS etc.). Wenn ich die SESSION explizit beende kann ich das Shared Mem. natürlich selbst zurückstzen. Wenn die SESSION aber vom Server gekillt wird, bleibt das Shared Memory belegt.

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

Danke für Antwort!!!

nach obennach unten

Am SESSION-Ende etwas ausführen

Die folgende Nachricht zum Thema stammt von: Gonzo, 29. 03. 2008, 22:57

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

Indem du mittels session_set_save_handler() eigene Behandlungsroutinen festlegst, dazu gehört auch, anders als der Name vermuten lässt, eine Routine zum Löschen. Soweit ich das überblicke, wird aber auch diese nicht beim tatsächlichen Lebensende aufgerufen, sondern sobald PHP meint, es wäre wieder einmal an der Zeit (wann das ist, kannst du aber mit session.gc_probability und .gc_divisor festlegen) und frühestens, sobald wieder ein Skript läuft. Beachte auch, dass die serverseitige Lebensdauer nicht mit session.cookie_lifetime festgelegt wird, sondern mit session.gc_maxlifetime.

nach obennach unten

Am SESSION-Ende etwas ausführen

Die folgende Nachricht zum Thema stammt von: Tom, 30. 03. 2008, 03:17

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

nach obennach unten

Am SESSION Ende etwas ausführen (DANKE!)

Die folgende Nachricht zum Thema stammt von: SESSION-heini, 30. 03. 2008, 15:57

Vielen Dank für die beiden Antworten,

hoert sich beides sehr vielversprechend an!!! Aber ich muss jetzt
natürlich erst mal ein bischen spielen um es zu verstehen. Ohne
euch wäre ich jedenfalls ein bischen dümmer ...

Danke!

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2008 Teil von März

© 1998-2006 Seite Impressum, Software: Classic Forum