我想知道垃圾收集何时会运行,所以我在下面做了测试脚本。PHP垃圾收集在后期启动
<?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)
为什么垃圾col尝试#2没有踢,但尝试#3踢?
好像'在session_start()'读会话,并运行GC – zerkms
后,才从文档'垃圾收集会话启动过程中可能出现...'为什么它看完后删除会议?这将是疯狂的,虽然它看起来就是它实际上在做的。 –
最精确的答案可以给一些对PHP源码足够自信的人。我们只能猜测:-) – zerkms