Heim > Backend-Entwicklung > PHP-Tutorial > Ein paar Fragen zur Gültigkeitsdauer der PHP-Sitzung

Ein paar Fragen zur Gültigkeitsdauer der PHP-Sitzung

WBOY
Freigeben: 2016-09-15 11:30:58
Original
1021 Leute haben es durchsucht

php.ini setzt den Standardwert session.gc_maxlifetime auf 1440. Wie soll ich diesen Wert verstehen?

Wenn ich eine Website besuche, für die eine Anmeldung erforderlich ist, schlägt die Anmeldung normalerweise nicht fehl, solange ich sie bedient habe. Wenn eine Zeit lang kein Vorgang erfolgt, muss ich mich erneut anmelden. Ich habe einige Informationen im Internet gelesen und etwas über die Sitzungsspeichermethode und den Recyclingmechanismus erfahren, aber es gibt immer noch ein Problem, das ich nicht klar verstehe.

Berücksichtigen Sie nicht die Probleme, die dieser Recyclingmechanismus verursachen kann, und ziehen Sie auch keine Cookies in Betracht (vorausgesetzt, Cookies sind immer gültig).

Unter der Annahme, dass session.gc_maxlifetime auf den Standardwert 1440 eingestellt ist, habe ich die Sitzung bei meiner ersten Anmeldung ausgeführt, die Benutzerinformationen gespeichert und die Sitzung danach nicht mehr geändert.

  • Stimmt es, dass die Änderungszeit dieser Sitzung immer noch die Zeit ist, zu der ich mich angemeldet habe, egal wie viele Anfragen ich in Zukunft stelle?

  • Ist die Sitzung nach mehr als 1440 Sekunden ungültig, unabhängig davon, ob ich auf dieser Website arbeite?

  • Oder liegt es daran, dass, wenn ich auf dieser Website gearbeitet habe, die Änderungszeit der Sitzung aktualisiert wird, was bedeutet, dass die Sitzung nur gelöscht wird, wenn sie länger als 1440 nicht auf dieser Website aktiv war Sekunden?

  • Oder wird die Sitzung nicht anhand des Änderungszeitpunkts gelöscht, sondern erst nach einer bestimmten Zeit der Inaktivität?

Ich hoffe auf eine ausführlichere Antwort, danke!

Antwortinhalt:

php.ini setzt den Standardwert session.gc_maxlifetime auf 1440. Wie soll ich diesen Wert verstehen?

Wenn ich eine Website besuche, für die eine Anmeldung erforderlich ist, schlägt die Anmeldung normalerweise nicht fehl, solange ich sie bedient habe. Wenn eine Zeit lang kein Vorgang erfolgt, muss ich mich erneut anmelden. Ich habe einige Informationen im Internet gelesen und etwas über die Sitzungsspeichermethode und den Recyclingmechanismus erfahren, aber es gibt immer noch ein Problem, das ich nicht klar verstehe.

Berücksichtigen Sie nicht die Probleme, die dieser Recyclingmechanismus verursachen kann, und ziehen Sie auch keine Cookies in Betracht (vorausgesetzt, Cookies sind immer gültig).

Unter der Annahme, dass session.gc_maxlifetime auf den Standardwert 1440 eingestellt ist, habe ich die Sitzung bei meiner ersten Anmeldung ausgeführt, die Benutzerinformationen gespeichert und die Sitzung danach nicht mehr geändert.

  • Stimmt es, dass die Änderungszeit dieser Sitzung immer noch die Zeit ist, zu der ich mich angemeldet habe, egal wie viele Anfragen ich in Zukunft stelle?

  • Ist die Sitzung nach mehr als 1440 Sekunden ungültig, unabhängig davon, ob ich auf dieser Website arbeite?

  • Oder liegt es daran, dass, wenn ich auf dieser Website gearbeitet habe, die Änderungszeit der Sitzung aktualisiert wird, was bedeutet, dass die Sitzung nur gelöscht wird, wenn sie länger als 1440 nicht auf dieser Website aktiv war Sekunden?

  • Oder wird die Sitzung nicht anhand des Änderungszeitpunkts gelöscht, sondern erst nach einer bestimmten Zeit der Inaktivität?

Ich hoffe auf eine ausführlichere Antwort, danke!

SESSION wird bei jedem Zugriff auf die Seite recycelt:

Recyclingwahrscheinlichkeit = session.gc_probability/session.gc_divisor, der Standardwert ist 1/1000. Wenn auf 1 gesetzt, wird es jedes Mal gelöscht, wenn die SESSION-Lebensdauer überschritten wird (session.gc_maxlifetime, der Standardwert ist 1440 Sekunden). beträgt 24 Minuten.) Bei jedem Zugriff wird die SESSION definitiv wiederverwendet. Jedes Mal, wenn der Client auf eine Variable in der SESSION zugreift, wird die Zugriffszeit auf die vom Client zur Anforderung gespeicherte PHPSESSID-Datei aktualisiert das eindeutige Cookie, das auf dem Server gespeichert ist. Wenn das Cookie des Clients abläuft, ist es unmöglich zu wissen, auf welche SESSION er zugreift, obwohl die SESSION-Datei zu diesem Zeitpunkt noch nicht abgelaufen ist und wiederhergestellt wird Serverressourcen. Wenn der Benutzer auf die Schaltfläche „Beenden“ klickt, kann das Programm zu diesem Zeitpunkt Cookies und Sitzungen abmelden. Wenn der Benutzer den Browser schließt und das System verlässt, kann die Datei sess_PHPSESSID nur manuell recycelt werden .

Die PHP-Sitzung verwendet einen passiven Recyclingmechanismus. Abgelaufene Sitzungsdateien werden stattdessen durch Auslösen des „Recyclings“ durch Anfragen automatisch verarbeitet Abgelaufene Sitzungen löschen:
Dateien vor 24 Minuten suchen und löschen:

find /path/to/sessions -cmin 24 -type f | xargs rm

Dieser Wert ist die Zeit seit der letzten Aktualisierung der Seite. Wenn Sie also nach der Aktualisierung der Seite 24 Minuten lang keine Vorgänge ausführen, löscht der Server die Sitzung. Ob es jedoch gelöscht wird, hängt von der in php.ini festgelegten Löschtrefferrate ab. Beispiel: session.gc_divisor=1000, session.gc_probability=1, was bedeutet, dass alle tausend Benutzer session_start() aufrufen 100 % Ein Garbage-Collection-Mechanismus wird ausgeführt, um nutzlose Sitzungsdateien auf der Festplatte zu löschen. Und durch diese Löschung ist nicht sicher, um welche Sitzungsdatei des Benutzers es sich handelt. Daher handelt es sich bei der Sitzung um eine Sitzungstechnologie, die zusammen mit dem Schließen und Neuschreiben des Browsers verstanden werden kann. Das heißt, solange ich den Browser schließe, wird die Sitzung getrennt und die Sitzung wird natürlich ungültig. . . . Mein persönliches Verständnis ist einfach. Wenn es irgendwelche Fehler gibt, hoffe ich, dass mich jemand korrigieren kann

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage