Frage:
Wie können Sie die Dauer einer Sitzung anhand der folgenden PHP-Konfiguration bestimmen? Einstellungen?
session.auto_start Off Off session.bug_compat_42 Off Off session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_httponly Off Off session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 1000 1000 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.hash_bits_per_character 5 5 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path /var/lib/php/session /var/lib/php/session session.serialize_handler php php session.use_cookies On On session.use_only_cookies Off Off session.use_trans_sid 0 0
Antwort:
Während die Einstellung session.gc_maxlifetime die maximale Lebensdauer der Sitzungsdaten seit ihrer letzten Änderung angibt, weist die Sitzungsverarbeitung von PHP einige Komplexitäten auf.
Insbesondere wird der Garbage Collector, der abgelaufene Sitzungsdaten entfernt, nicht bei jedem session_start-Aufruf aufgerufen. Stattdessen wird es mit einer Wahrscheinlichkeit aufgerufen, die durch session.gc_probability (Standard: 1) und session.gc_divisor (Standard: 100) bestimmt wird. Dies bedeutet, dass Sitzungsdaten auch dann noch für einen längeren Zeitraum verwendet werden können, wenn sie theoretisch abgelaufen sind.
Um dieses Problem zu entschärfen und zuverlässige Sitzungs-Timeouts sicherzustellen, wird empfohlen, einen benutzerdefinierten Sitzungs-Timeout-Mechanismus zu implementieren.
Das obige ist der detaillierte Inhalt vonWie wirkt sich der Session Garbage Collector von PHP auf die Sitzungslebensdauer aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!