__destruct() und sessions | code ausführen nach session-ende

würd gerne nach ablauf der session noch ein script ausführen.
dachte anfangs daran, einfach eine referenz auf ein objekt (PHP5) in
der session zu behalten, und wenn diese weg ist wird mittels garbage -
collector __destruct() aufgerufen.
doch leider bleibt das objekt nicht im speicher, nachdem das script
durchlaufen wurde.

wäre eine interessante möglichkeit, wenn die objekte original im
speicher bleiben könnten während einer session und nicht serialisiert
und wiederhergestellt werden müssten. da würden sich einige
Anwendungsmöglichkeiten auftun.

Aber nochmal zu meinem Problem:
weiss jemand eine Möglichkeit wie man nach dem Ende einer Session noch
ein Script anstossen kann? Konkret sollte das auch funktionieren, wenn
der User das Browserfenster einfach zumacht.
b_UT [ Mi, 30 November 2005 20:41 ] [ ID #1085084 ]

Re: __destruct() und sessions | code ausführen nach session-ende

b_UT schrieb:
^^^^

Ein echter Name wäre nett.

> weiss jemand eine Möglichkeit wie man nach dem Ende einer Session noch
> ein Script anstossen kann? Konkret sollte das auch funktionieren, wenn
> der User das Browserfenster einfach zumacht.

Wenn du überlegst, wie HTTP funktioniert, solltest du merken, dass das
so nicht gehen kann:

Browser -> HTTP-Request an Server
Server -> Antwort an Browser
Ende.

So, wie soll jetzt der Server mitbekommen, dass der Benutzer den Browser
zumacht?

Ein Würgaround wäre, per Javascript beim Schließen des Browsers nochmals
einen HTTP-Request auszulösen, der das gewünschte Skript ausführt.

gruss, heli
Helmut Chang [ Mi, 30 November 2005 22:10 ] [ ID #1086189 ]

Re: __destruct() und sessions | code ausführennach session-ende

b_UT wrote:

Hallo,

> Aber nochmal zu meinem Problem:
> weiss jemand eine Möglichkeit wie man nach dem Ende einer Session n=
och
> ein Script anstossen kann? Konkret sollte das auch funktionieren, wen=
n
> der User das Browserfenster einfach zumacht.

Das kommt drauf an wie man das Ende einer Session definiert.

Es soll noch was ausgeführt werden, wenn das Skript fertig
ist: register_shutdown_function().

Es soll noch was ausgeführt werden, bevor die Session vom
Garbage Collector gelöscht wird: session_set_save_handler().


tschuess
[|8:)
Sven Drieling [ Mi, 30 November 2005 22:08 ] [ ID #1086192 ]

Re: __destruct() und sessions | code ausführennach session-ende

b_UT:
^^^^
Hmm, ich muss mal auf meinem neuen System den Filter einrichten.

> dachte anfangs daran, einfach eine referenz auf ein objekt (PHP5) in
> der session zu behalten, und wenn diese weg ist wird mittels garbage -
> collector __destruct() aufgerufen.

__destruct() wird nach jedem Scriptaufruf aufgerufen und nicht nur am Ende
der Session.

> wäre eine interessante möglichkeit, wenn die objekte original im
> speicher bleiben könnten während einer session und nicht serialisiert
> und wiederhergestellt werden müssten.

Ich glaub' so was nennt sich Application Server und meine mal gehört zu
haben dass es da auch so was für PHP geben soll.

> weiss jemand eine Möglichkeit wie man nach dem Ende einer Session noch
> ein Script anstossen kann? Konkret sollte das auch funktionieren, wenn
> der User das Browserfenster einfach zumacht.

Damit ist "Ende einer Session" eigentlich der Zeitpunkt wann der GC meint
die Session zu löschen und Dir wird nichts anderes übrigbleiben als einen
eigenen GC zu implementieren. Du solltest auch wissen, dass der Zeitpunkt
wann ein GC aktiv wird meilenweit von dem Zeitpunkt wann der User den
Browser geschlossen hat entfernt liegen kann (und dies meistens auch tut).
--
http://hommingberger-gepardenforelle.malkusch.de/
Markus Malkusch [ Do, 01 Dezember 2005 19:55 ] [ ID #1086237 ]

Re: __destruct() und sessions | code ausführen nach session-ende

hab http://www.vl-srm.net/ gefunden - das ist wohl so eine art
application-server unterstützung für PHP - klingt recht interessant -
PHP5 - Support fehlt warscheinlich noch
b_UT [ Fr, 02 Dezember 2005 13:02 ] [ ID #1086264 ]
PHP » de.comp.lang.php.misc » __destruct() und sessions | code ausführen nach session-ende

Vorheriges Thema: Server liefert PHP-Datei zum Speichern aus / timeout?
Nächstes Thema: PHP Tutorials