<?php /** * session gc test * * セッションに値が入っている場合は、session_startのタイミングでtimestampが更新されていく * セッションが空の場合は、session_startしてもtimestampは作られたときのまま * * セッションに値が入っている場合 * -gc2.php?init= でセッションに値を格納 * -gc2.php?PHPSESSID=のリンクをクリックすると、atime、ctime共に更新される * -gc2.phpを呼び出すと、上記セッションにアクセスしないので、gc送りのカウントダウンが始まる * -続けてgc2.phpを呼び出す。 * -gc_maxlifetimeが過ぎた時点で上記セッションはgc対象になる * -gc_probability / gc_divisor (1/3) の確率でgcが起動し、上記セッションファイルが消される * * セッションに値が入っていない場合 * -gc2.phpでアクセス * -gc2.php?PHPSESSID=のリンクをクリックしてもatime,ctimeが更新されない * -作成された時点からgc送りのカウントダウンは始まっている * -gc_maxlifetimeが過ぎた時点で上記セッションはgc対象になる * -gc発動とともに削除される */ ini_set ( "session.use_trans_sid", 1 ); ini_set ( "session.use_cookies", 0 ); ini_set ( "session.use_only_cookies", 0 ); ini_set ( "session.gc_maxlifetime", "5" ); ini_set ( "session.gc_probability", "1" ); ini_set ( "session.gc_divisor", "3" ); session_start(); if (isset($_GET['init'])) { $_SESSION['time'] = date("Y-m-d h:i:s"); } print '<p><a href="gc2.php">gc2.php</a></p>'; print '<pre><code>'; $files = scandir(session_save_path()); print "now: " . date('Y-m-d h:i:s') . "\n"; foreach($files as $file) { if (preg_match("/^sess_/", $file) !== 1) { continue; } $file = session_save_path() . "/" . $file; print $file . "\n"; print "atime: " . date('Y-m-d h:i:s', fileatime($file)) . "\n"; print "mtime: " . date('Y-m-d h:i:s', filemtime($file)) . "\n"; if (isset($_SESSION['time'])) { print $_SESSION['time'] . "\n"; } print "\n"; } print '</code></pre>';
参考になるので