ガベージコレクトがいつ実行されるかを正確に知りたいので、以下のテストスクリプトを作成しました。
<?php
ini_set('session.gc_maxlifetime',10);
ini_set('session.gc_probability',1);
ini_set('session.gc_divisor',1);
echo ini_get('session.gc_maxlifetime').'s ';
echo ini_get('session.gc_probability').'/';
echo ini_get('session.gc_divisor')."<br>";
session_start();
echo session_id();
if (isset($_SESSION['test']))
{
echo "<br>";
echo "session set";
}
$_SESSION['test'] = "works";
echo "<br>";
print_r($_SESSION);
?>
#1を試してください:最初に試してみると、次のようになります。
10s 1/1
e9isrrljuvdbr1c6vqndp1e4i7
Array ( [test] => works )
#2を試してください:10秒以上待ってから:
10s 1/1
e9isrrljuvdbr1c6vqndp1e4i7
session set
Array ( [test] => works )
#3を試してください:その後いつでも私は得ます:
10s 1/1
e9isrrljuvdbr1c6vqndp1e4i7
Array ( [test] => works )
ガベージコレクションが試行#2では開始されず、試行#3で開始されるのはなぜですか?