質問:
次の PHP 構成に基づいてセッションの期間を決定するにはどうすればよいですかsettings?
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
答え:
session.gc_maxlifetime 設定は、最後の変更以降のセッション データの最大存続期間を指定しますが、PHP のセッション処理にはいくつかの複雑さがあります。
具体的には、期限切れのセッション データを削除するガベージ コレクターは、すべての session_start で呼び出されるわけではありません。 電話。代わりに、session.gc_probability (デフォルト: 1) と session.gc_divisor (デフォルト: 100) によって決定される確率で呼び出されます。これは、理論的にはセッション データの有効期限が切れた場合でも、セッション データは長期間使用される可能性があることを意味します。
この問題を軽減し、信頼性の高いセッション タイムアウトを確保するには、カスタム セッション タイムアウト メカニズムを実装することをお勧めします。
以上がPHP のセッション ガベージ コレクターはセッションの存続期間にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。