スレッド表示 | フラット表示〕 全トピック 923 件中 128 番目 次≫ ≪前

セッション クッキーの保存期間

created: 2007-01-21 00:50 | modified: 2007-04-04 01:37 | reply: 19

[3541] Re.セッションの有効期限

user: ゆうじ | created: 2007-01-24 23:52
確かに24分以上アクセスしなくても
セッションが保持され続けてることはありますね。
これも結構深い話になりますよ。

セッションが切断されるのは、クッキーが破棄された場合と、
セッションのファイルが破棄された場合の2パターンがあり
それぞれタイミングが違います。


クッキーの方は有効期限が切れた時で、
session.cookie_lifetimeで設定できます。
実際のところユーザPCが有効期限を判断して破棄します。


セッションファイルの方は、
ガーベージコレクション(以降gc)と呼ばれる、
利用しなくなった物を破棄する仕組みが用いられてます。
gc は省エネ的ポリシーの持ち主で、
ゴミを破棄するのにせっせと働いたりはしません。
何かの条件によって実行するのではなく
○○%の確立で実行するちょっと特殊な代物です。

gc が実行されさえすれば、最終更新時刻が
session.gc_maxlifetime よりも古いファイルは
破棄されますがそれまでファイルは残ったままです。


これらを踏まえていただくと、
最終アクセスから各設定時間を過ぎた場合でも、
セッションが確立され続けてる時間が存在することが
おわかりいただけるかと思います。


ちなみに以下で
session.gc_probability = 1
session.gc_divisor = 100
(デフォルトで1/100の確立)
gcが実行される確立を設定できますが、
共用サーバだと設定したところで
どれほど効力があるのわかりません。


こんな具合なので
セッションを維持し続けるのもひと工夫いりますが、
確実に破棄するにもひと工夫必要です。

セッションクッキーを破棄するには、
過去の有効期限を持つクッキーを送信すれはOKです。
セッションファイルの破棄は、
gcに任せず破棄するコードを自前でを書く必要があります。

ただログイン・ログアウトの判定だけならば、
セッションにアクセス時間を記録しておき、
特定の時間を過ぎていれば無効と判断しログイン処理へ導けば
セッションを破棄するまでもありません。


それと、先のセッションハンドラですが
一応テストして稼動を確認しましたので
設定のところだけ書き換えてもらえれば
特に考えなくても使えますよ。
オブジェクト指向プログラミングは
理解できないまでも使いつづけるうちに
ある日突然全てが理解出来たりするので
まずは使って慣れることをおすすめします。
Parent: 3539  reply: 3546 返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 923 件中 128 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑