2009-10-04 8 views
39

私のセッションが以下のデータからどれくらい持続するか教えてもらえますか? - 私はどちらが私に教えているか分からないセッションはどのくらいの期間続くでしょうか?

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 

答えて

77

は、一般的には、あなたはsession.gc_maxlifetimeがあなたのセッションデータの最後の変更以来、最大の寿命を指定すると言うことができます(ないsession_startが呼び出された最後の時間!)。しかし、PHPのセッション処理は少し複雑です。

session_startによってのみ呼び出されるガベージコレクタによってセッションデータが削除されるため、session.gc_probabilityの確率は、session.gc_divisorで除算されます。デフォルト値は1と100ですので、ガベージコレクタはすべてのsession_startコールのわずか1%で開始されます。つまり、セッションがすでに理論的にタイムアウトしていても(セッションデータがsession.gc_maxlifetime秒前に変更されていた場合)、セッションデータをそれより長く使用することができます。

この事実のため、あなた自身のセッションタイムアウトメカニズムを実装することをお勧めします。詳細はmy answer to How do I expire a PHP session after 30 minutes?を参照してください。

+0

session.cache_expireはこれとどのように相互作用しますか? – matteo

+5

'session.cache_expire'はサーバーレスポンスのHTTPキャッシングにのみ影響しますが、セッションの有効期限には影響しません。 – Gumbo

+1

ああ、私は見ると、cache_expireはcache_limiterと一緒に働く。 PHPのドキュメンテーションはそれについて非常に不明です。 私はここに書かれているものの一つの単語を解読できませんでした:http://es1.php.net/manual/en/function.session-cache-expire.phpこれを読むまで:http://es1.php .net/manual/en/function.session-cache-limiter.php ありがとう@Gumbo – matteo

17

これはひとつです。セッションは1440秒(24分)持続します。

session.gc_maxlifetime 1440 1440 
5

If session.cookie_lifetime is 0, the session cookie lives until the browser is quit.

EDIT:その他session.gc_maxlifetime設定を記載しています。セッションガベージコレクションが発生すると、ガベージコレクタは、アクセスされていないすべてのセッションデータをsession.gc_maxlifetime秒より長く削除します。セッションクッキーの有効期間を設定するには、session_set_cookie_params()に電話するか、session.cookie_lifetime PHP設定を定義します。この設定がsession.gc_maxlifetimeより大きい場合は、session.gc_maxlifetimeをセッションの有効期限を超えないように、Cookieの有効期間以上の値に増やす必要があります。

+0

ブラウザを閉じてもう一度ページを開くと、同じセッションIDが表示されますか? –

+1

ブラウザがまだ動作している場合は、はい。セッションクッキーは、ブラウザアプリケーションが終了すると期限切れになります。 –

+0

クッキーは有効ですが、ブラウザを開いたままにしても、セッション自体は24分後に有効になりません。 –

関連する問題