Heim > Artikel > Backend-Entwicklung > javascript – So implementieren Sie in PHP, dass das System automatisch beendet wird, wenn der Benutzer eine Zeit lang keine Aktionen ausführt
Das Subjekt wurde mit thinkphp entwickelt und basierend auf seinen vorhandenen Funktionen ist es möglich, die Sitzung innerhalb eines bestimmten Zeitraums zu beenden (unabhängig davon, ob der Benutzer aktiv ist oder nicht), aber in diesem Fall wird das Erlebnis definitiv so sein schlecht
Beurteilen Sie, ob der Benutzer einen Vorgang ausgeführt hatIn der BrancheAuf welche Art von Situation bezieht sich dies im Allgemeinen?
1. Die Maus bewegt sich eine Zeit lang nicht?
2. Keine Mausklick-Bedienung?
3...
Ich kann diese Vorgänge in Cookies aufzeichnen und die Ablaufzeit des Cookies festlegen. Das Cookie ist jedoch abgelaufen.
Das Subjekt wurde mit thinkphp entwickelt und basierend auf seinen vorhandenen Funktionen ist es möglich, die Sitzung innerhalb eines bestimmten Zeitraums zu beenden (unabhängig davon, ob der Benutzer aktiv ist oder nicht), aber in diesem Fall wird das Erlebnis definitiv so sein schlecht
Beurteilen Sie, ob der Benutzer einen Vorgang ausgeführt hatIn der BrancheAuf welche Art von Situation bezieht sich dies im Allgemeinen?
1. Die Maus bewegt sich eine Zeit lang nicht?
2. Keine Mausklick-Bedienung?
3...
Ich kann diese Vorgänge in Cookies aufzeichnen und die Ablaufzeit des Cookies festlegen. Das Cookie ist jedoch abgelaufen.
Option 1
Serverseitiges Implementierungsprinzip: Legen Sie einen Zeitstempel für den Datensatzzugriff in der Benutzertabelle fest. Wenn sich der Benutzer anmeldet, schreiben Sie bei jedem Zugriff auf eine Seite, die eine Anmeldung erfordert, den aktuellen Zeitstempel plus das erforderliche Inaktivitätsintervall Überprüfen Sie zunächst, ob die Zeit dieses Felds größer als die aktuelle Zeit ist. Wenn sie größer ist, bedeutet dies, dass der Vorgang ausgeführt wird, und fügen Sie den Zeitstempel zur Zeit hinzu, die zum Beenden ohne Vorgang erforderlich ist, und aktualisieren Sie das Feld erneut . Oder verwenden Sie eine Sitzung anstelle eines Datenbankeintrags.
Option 2
Das Prinzip der Front-End-Implementierung unter Verwendung von HTML5-Speicher oder Cookies entspricht der Idee von Option 1, außer dass die Speichermethode geändert wird.
Vergleich der Pläne
Der Datenbankspeicher von Plan 1 weist eine schlechte Leistung auf. HTML5 ist nicht mit Browsern niedrigerer Versionen kompatibel und js ist ungültig, wenn Cookies deaktiviert sind. Daher ist eine Sitzung angemessener.
Was ich getan habe, ist, mich automatisch abzumelden, wenn nach der Anmeldung des Benutzers 15 Minuten lang kein Vorgang erfolgt. Dabei kommt es nicht darauf an, ob sich die Maus bewegt oder nicht, es hängt alles davon ab, ob mit der Maus geklickt wird oder ob die Seite aktualisiert wird. Sie können cookie
einfach direkt löschen, wenn die Einstellung cookie
abläuft. Nur als Referenz
Ob ein Vorgang vorliegt, bezieht sich im Allgemeinen darauf, ob eine Zugriffsanforderung vorliegt. Wenn eine Anforderung vorliegt, kann das Backend das Cookie aktualisieren und Cookies verwenden, um den Ablauf zu steuern.
Natürlich ist es sicherer, die Sitzung zu verwenden, um die Zeit der Anfrage aufzuzeichnen und festzustellen, ob sie abgelaufen ist, wenn eine neue Anfrage gestellt wird. Wenn das Front-End den Ausgang erzwingen möchte, kann es das Heartbeat-Signal verwenden (das Heartbeat-Signal kann die Anforderungszeit natürlich nicht aufzeichnen).
Sie können die beiden auch kombinieren. Kurz gesagt, es gibt viele Methoden, es hängt davon ab, wie Sie sie verwenden möchten.
Die Sitzungsablaufzeit wird in php.ini konfiguriert. Wenn nach Ablauf der Zeit keine Aktion ausgeführt wird, 自杀
wird die CLI von selbst ausgeführt.
Im Allgemeinen ist das Frontend ein globaler Ereignismonitor. Jedes Mal, wenn ein Ereignis ausgelöst wird, ruft AJAX eine Sitzung auf, sodass die Benutzersitzung ohne Unterbrechung aufrechterhalten werden kann. Andernfalls wird es freigegeben, wenn es nicht ausgeführt wird und die Sitzungsablaufzeit in php.ini überschreitet.
Machen Sie nicht herum, hier gibt es ein fertiges:
https://github.com/thorst/jqu...
Es gibt Rückrufe beim Eintritt in den Ruhezustand und beim erneuten Aktivieren des Zustands. Senden Sie beim Eintritt in den Ruhezustand ein xhr an den Server, um die Sitzung zu beenden, und Sie sind fertig
Im Allgemeinen dient es der Hintergrundsteuerung und legt das Sitzungszeitlimit fest.
Das Betriebszeitlimit des Benutzers ist der Lebenszyklus von SESSION. Wenn der Sitzungszyklus mit 24 Minuten angenommen wird und sich der Benutzer um 12:00 Uhr anmeldet und nach 12:24 Uhr keine Vorgänge ausführt, wird die SESSION ausgeführt zu diesem Zeitpunkt erneut ungültig sein Der Vorgang erfordert eine erneute Anmeldung, und der Zeitunterschied zwischen den beiden Vorgängen darf 24 Minuten nicht überschreiten. Außerdem: Wenn das COOKIE ungültig ist, darf keine Anmeldung für SESSION vorliegen und der Benutzer darf nicht angemeldet sein. Der Garbage-Collection-Mechanismus von PHP bereinigt automatisch die SESSION-Datei. Wenn es sich um eine in Redis gespeicherte SESSION handelt, dann in Redis verfügt auch über eine entsprechende Methode zur Zerstörung von Sitzungsdaten.