以下は 2 つのファイル a.php と b.php です。php.ini は session.gc_maxlifetime を 1 に設定します。
a.php にアクセスした後、セッションを生成し、1 秒後、5 秒後に b.php にアクセスします。そして 10 秒後、もう一度 b にアクセスします。phpなぜ b.php のセッションには常に値が含まれているのでしょうか?なぜ有効期限が切れていないのですか?
session.gc_maxlifetime は、最後の訪問から session.gc_maxlifetime 秒後に sessionid を削除できることを意味します
注: 削除することはできますが、削除されるかどうかに関係なく、必ずしも削除されるわけではありません。 session.gc_probability/session.gc_divisor の比率に依存します
PHP のデフォルト:
session.gc_probability = 1
session.gc_divisor = 1000
つまり、削除される可能性は 1,000 分の 1 です
さらに、一部のサーバーでは、 、 session.save_path がオペレーティング システムの一時ファイル ディレクトリ以外を指している場合、セッション一時ファイルは手動でゴミをクリーンアップするまで永続的に存在します。最後のアクセスからの session.gc_maxlifetime 秒を意味します。削除可能です
注: 必ずしも削除できるわけではありません
削除されるかどうかは、session.gc_probability/session.gc_divisor の比率によって異なります
session.gc_probability = 1
session.gc_divisor = 1000
つまり、削除されます 削除される可能性は 1,000 分の 1 です
さらに、一部のサーバーでは、session.save_path がオペレーティング システムの一時ファイル ディレクトリを指していない場合、 gc プロセスはそれに影響を与えることはできません
セッション一時ファイルは手動でゴミを削除するまで永続的に存在します
以上です、ありがとうございました!
あまり明確ではない別の質問があります。セッション ID は共有できるのですが、ユーザーをオフラインにするにはどうすればよいですか?
厳密に 30 分で期限切れになるセッションを設定する方法
ユーザーをオフラインにするには、通常、以下が必要ですカスタムセッションオペレーションを使用する