セッションの有効期限を設定する
公開日:2014年6月2日
Webサイトへアクセスしてきたのが同じクライアントだと認識するには、クッキーとセッションの仕組みを使います。どちらも有効期限を持っていますので、それらの仕組みと設定方法を解説します。
セッションの仕組み
クライアントのアクセス情報を保持するセッションは、一般的にクッキー(Cookie)を使います。
従ってブラウザ側でクッキーを有効にしておかなければなりません。
そのクッキーの有効期限は、最初にサイトにアクセスしてきた時に、サーバー側で設定可能です。
サーバー側のセッション管理プログラムは、セッションスタート時に、
「session_set_cookie_params($lifetime);」を実行して有効期限を設定しています。
ここで$lifetimeは、「php.ini」の中にある、"session.cookie_lifetime"の設定値(単位は秒)を参照します。
デフォルトは0になっており、ブラウザを閉じるまで有効となっています。
このクライアント側のクッキーの仕組みを、セッションクッキーといいます。
そしてサーバー側でもセッション情報を一定期間保存しています。
セッション情報の保存期間を決定するのが、次の3つのパラメータです。
session.gc_maxlifetime
session.gc_probability
session.gc_divisor
セッション情報が書き込まれているファイルは、"session.gc_maxlifetime"より更新日付が古いと削除されます。
削除するプログラムは、session_start()が呼ばれた際に起動するGC(ガーベージコレクタ)です。
ただGCは毎回起動するというわけではなく、
分母に"session.gc_divisor"、分子に"session.gc_probability"をもってきた確率で起動されます。
これは毎回起動していると負荷が大きいという判断からです。
セッションの設定変更
デフォルトでは有効期限は1440(24分)、セッションファイルを削除するGCの起動確率は1/1000です。
つまり、「php.ini」の中では以下のように記述されています。
session.gc_maxlifetime = 1440
session.gc_probability = 1
session.gc_divisor = 1000
設定を変更するには、「php.ini」の記述を変えるだけです。
また、「.htaccess」に記述することでも変更できます。
例えば、有効期限を1時間、GC起動確率を1/100にするなら以下のようにします。
1 2 3 |
php_value session.gc_maxlifetime 3600 php_value session.gc_probability 1 php_value session.gc_divisor 100 |
スポンサーリンク