Ich versuche, Benutzer zu protokollieren, wenn das Sitzungszeitlimit des Benutzers auftritt. Das Abmelden von Benutzern - in meinem Fall - erfordert die Änderung des "Online" -Status des Benutzers in einer Datenbank.
Ich dachte, dass ich in der Lage sein könnte, das Observer-Muster zu verwenden, um den Status der Benutzersitzung zu überwachen und einen Rückruf auszulösen, wenn die Sitzung abläuft. Der Name des Benutzers wird beibehalten, damit die Datenbank aktualisiert werden kann. Ich bin mir nicht sicher, wo ich auf der Sitzung beginnen soll. Kann ich einen Rückruf an das Timeout der Sitzung binden?PHP-Beobachter-Muster, um Benutzer zu protokollieren, wenn die Sitzung abläuft
Sind diese Dinge in alle verfügbaren Pear- oder Zend-Session-Pakete eingebaut? Ich werde alles nutzen, um dies zu ermöglichen!
UPDATE @ 16.33:
Was ist, wenn Sie ein System haben, in dem Benutzer miteinander in Wechselwirkung treten können (aber sie können nur mit Online-Benutzern interagieren)? Der Benutzer muss wissen, welche anderen Benutzer gerade online sind.
Wenn wir einfach überprüfen, ob die Sitzung bei jeder Seitenaktualisierung noch aktiv ist, wird der Benutzer nach einer Zeitüberschreitung an eine nicht eingeloggte Seite gesendet, die jedoch weiterhin als online im System aufgeführt ist.
Diese Methode wäre in Ordnung, außer dass, wenn wir die Sitzung abbrechen, verlieren wir die Informationen über den Benutzer, die verwendet werden könnten, um sie abzumelden.
UPDATE @ 16: 56:
rechts. Vielen Dank. Ich stimme zu ... irgendwie hässlich. Ich habe bereits eine langsame Abfrage des Servers, so dass es ziemlich einfach wäre, diese Methode zu implementieren. Es scheint nur so ein nützliches Feature für ein Session-Handling-Paket zu sein. Zend und PEAR haben beide Sitzungspakete.
Statt der Cron, einen einfachen Benutzer überprüfen über die Logik der Seite (Suche nach Cookie, überprüfen Sie 'last_visited' Spalte auf Benutzer db Datensatz, etc). Wenn der Benutzer also beschließt, wieder aktiv zu werden, können Sie die Benutzerinformationen und -aktivitäten überprüfen und trotzdem weiterleiten, da die Header noch nicht gesendet wurden. –