My Photo

« bashのシェルスクリプト | Main | PHPメモ044:PHPで暗号化・復号化 »

August 31, 2014

PHPメモ043:セッションの有効期間の設定

PHPで「セッションの有効期間」というと、「サーバが持つセッションデータそのもの有効期間」と「セッションクッキーの有効期間」(セッションIDをクッキーでやり取りする場合)がある。
アプリケーションの仕様として「何分で確実にセッションが期限切れになってほしい」って場合、セッションクッキーの設定をすればいい。クッキーが使えないガラケー向けのWEBアプリなどではクエリストリングでセッションIDをやりとしているのでセッションクッキーの設定は無意味だが、そういうガラケー向けWEBアプリの開発は今後はなさそうなので考えない事にする。
また、スマホ向けWEBアプリでHTML5を使う場合はクッキーの代わりになる「Web Storage」なるものがあるらしいが、それはまた別の機会に。
#スマホは機種によってクッキー関連が想定どおり動かなくてすごく困ることがある;;

セッションデータの有効期間

セッションデータそのもの有効期間は、php.ini の以下の3つの設定値で決まる。php.ini の設定値なのでアプリケーション毎ではなくサーバ毎の設定になる。

  • session.gc_maxlifetime
  • session.gc_probability
  • session.gc_divisor

session.gc_maxlifetime で指定した秒数を経過したセッションデータは「ゴミ」とみなされ、セッションの初期化の際(session_start() が呼ばれた時?)に (session.gc_probability/session.gc_divisor) の確率でgc(ガーベッジコネクション)プロセスが起動して削除される。
「指定した秒数を経過した」というのは厳密にはどういう意味なのか。セッションデータのファイルの最終更新日時から session.gc_maxlifetime の秒数を経過したらゴミ認定と理解しているが、自信はない。
また、ゴミ認定されたセッションデータはが確率的に削除されるのはなぜなんだろう。負荷の問題だろうか。

前述のようにこの設定はサーバ単位なので、同一のサーバ上でVirtualHostを使用するなどして異なるWEBアプリケーションを実行する場合、セッションデータの有効期限はすべて同じになる。アプリケーション毎には有効期限を変えたい場合には、設定を考えなければならない。らしい。

セッションクッキーの有効期間

アプリケーションの設計・実装ではセッションデータの有効期間よりこちらの方が重要。
次の関数でセッションクッキーの設定を行う。

void session_set_cookie_params(
  int $lifetime [, string $path [, string $domain 
  [, bool $secure = false [, bool $httponly = false ]]]])

lifetime  セッションクッキーの有効期限。秒数で指定。

session_set_cookie_params() は session_start() より前で呼ばなければならない。

参考ページ:
PHP: session_set_cookie_params - Manual
セッション | PHP プログラミング解説
セッション(session)の有効期限を設定するには - spanstyle::monolog
賢者の漬け物石: PHP のセッション寿命の設定
phpでセッションの情報が消える - michihideの日記
セッションの有効期間とか設定とか挙動とかを調べました - [PHP + PHP] ぺんたん info

« bashのシェルスクリプト | Main | PHPメモ044:PHPで暗号化・復号化 »

PHP」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/60238524

Listed below are links to weblogs that reference PHPメモ043:セッションの有効期間の設定:

« bashのシェルスクリプト | Main | PHPメモ044:PHPで暗号化・復号化 »

April 2017
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof