|
News:
|
| 1 | ||
|
Was willst du jetzt genau, willst du abgelaufene Sessions löschen, die werden doch bereits automatisch gelöscht.
Oder willst du nach Zeitpunkt X die Session killen und einen bestimmten User ausloggen??? – BiX 08.09.2009
|
||
|
Zweiteres.
Am besten unabhängig von Transaktionen innerhalb der Web-Applikation und zum individuellen Ablaufzeitpunkt. Aber das will ich nicht, sondern ich mache es ja schon. Wollte nur mal fragen was für Ideen die Community so hat, ob es "bessere" Wege als die meinen gibt. – MiW 09.09.2009
|
<?php
while(true){
sleep(60*5);
//lösche veraltete Sessions
}
?>
|
|
|
Ob bei Windows generell ein Problem besteht kann ich nicht sagen, aber auf meinem Server 2003 ist das so.
Das PHP-Cmdline-Tool ist ja im Prinzip der von mir eingesetzte Eventhandler. Der bekommt über einen internen Socket einen Timestamp und einen Codeschnipsel und führt den zur gegebenen Zeit aus. – MiW 08.09.2009
|
||
|
Welche Probleme/Nachteile hast du denn damit, die du in deiner Frage angesprochen hast?
Hab mal nen Beispielcode an meinen Beitrag gehängt wie ich es meinte. – Flyingmana 08.09.2009
|
||
|
Das Script kannste dann aber jedes mal neustarten, wenn du einen Server-Reset machst.
Sowas vergisst man auch gern mal :) Müßte also zusätzlich noch in irgendein Startscript eingebunden werden. – lunatigs 08.09.2009
|
||
|
Das einbinden in eine Startscript sollte ja eigentlich auch nicht das Problem sein, auch wenn der SQL-Server, Apache und der Scheduler von Windows das von allein machen. XD
War das denn schon das problem?^^ – Flyingmana 08.09.2009
|
||
|
@Flyingmana: das Problem tritt auf, wenn der Prozess "wegschmiergelt" ihn a) neu zu starten und b) die queue wieder herzustellen und c) die verpassten events "vernünftig" abzuhandeln.
Ist aber auch eher ein Problem wenn sehr viele events in der Queue stecken. Ein anderes Thema sind verlorene DB-Connections unter PHP beim Multithreading. Ich wollte ja auch nur mal abchecken, was ihr so für ideen habt... – MiW 08.09.2009
|
||
|
Diese Lösung halte ich für maximal ungünstig.
Ein Cronjob für eine Sache, die PHP durch gc_session..-Werte selbst regelt? – tomahlak 23.10.2009
|
|
|
|
|
|
|
|
Genau so ist es, man muss nicht automatisch die Session Dateien löschen, die werden gelöscht sobald die Session abgelaufen ist, mit den von Scout genannten Einstellungen!
Wenn du die Session vorzeitig beenden willst, ist das was anderes, aber du schreibst doch wie abgelaufene Sessions gelöscht werden, das passiert automatisch! – BiX 08.09.2009
|
||
|
hab ich mich wohl falsch ausgedrückt.
Ziel ist es die Session unabhängig zu beenden und dann die Sessiondaten aus der DB zu löschen. – MiW 09.09.2009
|
|
|
|
Natürlich sollte man hier auch die SessionHandler gemäß php-Handbuch in eine statische Handler-Klasse umleiten. Das DB-Modell sollte dann eine current_timestamp-Spalte haben (touchdate).
Dieses kann dann alternativ zu created verwendet werden. – tomahlak 23.10.2009
|
|
|
|
mach ich ja schon, es geht darum die nicht korrekt beendeten oder inaktiven Session zu löschen.
Das geht ja nur Zeitgesteuert. Das "Wie kille ich die Session" ist nicht das Problem, sondern mehr das "Wie veranlasse ich das Killen" – MiW 08.09.2009
|
||
|
Ich glaube er meint, wie man bei einem datenbankbasierten Sessionhandling alte Datenzeilen löscht. Nicht wie man die Inhalte der aktuellen Session zurücksetzt. Die Datenzeile bleibt dabei in der DB erhalten.
– tomahlak 23.10.2009
|
|
|
naja, wenn die Daten wie du sagst in einer Memory Tabelle liegen, wärs doch performancetechnisch vertretbar bei jedem Aufruf des Scripts nach abgelaufenen Sessions zu schauen, oder?