ホームページ > バックエンド開発 > PHPチュートリアル > PHPセッション生存時間の問題、助けてください

PHPセッション生存時間の問題、助けてください

WBOY
リリース: 2016-06-23 13:58:21
オリジナル
796 人が閲覧しました

以下は 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 の比率によって異なります

PHP のデフォルト:

session.gc_probability = 1

session.gc_divisor = 1000
つまり、削除されます 削除される可能性は 1,000 分の 1 です

さらに、一部のサーバーでは、session.save_path がオペレーティング システムの一時ファイル ディレクトリを指していない場合、 gc プロセスはそれに影響を与えることはできません
セッション一時ファイルは手動でゴミを削除するまで永続的に存在します

以上です、ありがとうございました!
あまり明確ではない別の質問があります。セッション ID は共有できるのですが、ユーザーをオフラインにするにはどうすればよいですか?

厳密に 30 分で期限切れになるセッションを設定する方法


理論的に言えば、セッション ID は共有できません
セッション ID は Cookie を介して渡され、有効期間は 0 であるため

ユーザーをオフラインにするには、通常、以下が必要ですカスタムセッションオペレーションを使用する

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート