我想知道垃圾收集何時會運行,所以我在下面做了測試腳本。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