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

高橋政利 takahashi @ hoshino-dk.co.jp
2005年 10月 24日 (月) 13:05:13 JST


高橋です

私もセッションについては、便利に利用しています。
だたし、セッションの挙動について、多少なり理解して使用しないと
思わぬ落とし穴があるようです。
私自身も、まだ初級者の域を脱していないようなので、間違っているかもしれま
せんが、その辺を踏まえて参考になればと思います。

さて、質問の保持時間ですが、ブラウザを閉じたときに破棄されるクッキーは、
「session.cookie_lifetime」にて秒単位で指定できます。0秒で指定(デフォル
ト)すると、ブラウザを閉じた時に破棄されます。1時間では 1時間×60分×
60秒 となりますので、3600となります。

さらに、サーバー側にあるセッション情報は、「session.gc_maxlifetime」にて
秒単位で指定できます。デフォルトは1440秒です。
実際に削除されるかは「session.gc_probability」での確率によります。(だぶ
ん^^;)


セッションの保持時間なのですが、サーバーに記録されている情報の保持時間と
クライアント側のクッキーの保持時間と混乱しないようにしてください。
クッキーを利用してセッションを実現している場合ですが(この辺はPHP.INIの
「session.use_cookies」が「1」であるか「0」であるかで判断できます。)、
あくまでクライアント側に記録されている「セッションIDを記録するクッキー情
報」の保持時間です。

サーバーに記録されている情報は明示的に、「unset()」で削除できます。


藤原さんのご指摘の通り、PHP.INIは全体に影響しますので、ログイン時間を記
録しておき、再度アクセスがあったときにチェックするような方法が、より良い
と思われます。

間違っていたら、ごめんなさい。



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