[PHP-users 27304] Re: セッション情報 自動破棄するまでの時間

神 谷 djr_kamiya @ hotmail.com
2005年 10月 27日 (木) 14:40:24 JST


神谷@sswです

>石井です。
>本筋から少しズレてきましたが面白そうなので。
 マニュアルからも読み取れますが、実体験をもとにした情報共有のほうが、実例が
あって
チョット幸せかもですね。

>PHP4.3.11でのみ動作確認しましたが、有効期限が切れた(gc_maxlifetime
>を超えた)セッションでも、GCによって削除されなければ、それは有効な
>セッション情報としてみなす動作をしています。
PHP5.0系でも同様の動作をします。
PHPのGC自体が、PHPがセッションファイルにアクセスするタイミングでしか動作
しないため、アクセスの多いサイトでは有効期限が比較的生きてきますが、一部
のユーザしか利用しないサイトではGC自体がなかなか動作しないため、セッション
ファイルにアクセスできてしまいます。
複数のユーザがアクセスしている場合は、他のユーザがアクセスした際にもGCが
動作するので、セッションファイルが消えていることもあります。
(確認環境: Win / Apache1.3.33 / PostgreSQL8.0.3 / PHP5.0.3 / Smarty2.6.6 )


従って、厳密に有効期限を設けたい場合は、セッションへの最終アクセスタイムスタ
ンプ
をセッション変数に保持しておき、その時間が有効時間外の場合、またはセッション
情
報がなくなっていた場合は無効とするような処理にする必要があります。

php.iniで設定可能な
session.gc_probability
session.gc_divisor
session.gc_maxlifetime
は、あくまでもGCが動作するための設定であって、セッションの有効/無効とは別次

の管理であると考えるのが妥当だと思います。

_________________________________________________________________
ウィルス駆除も無料の 「MSN Hotmail」  http://www.hotmail.com/ いますぐサイン
アップを!



PHP-users メーリングリストの案内