我想确切地知道垃圾收集何时运行,所以我制作了下面的测试脚本。
<?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 时启动?