下面的代碼在Firefox上正確執行,但不在Chrome上執行。後者總是顯示「ERR_RESPONSE_HEADERS_TOO_BIG」。當我遍歷包含超過10000個項目(文件)的文件夾時發生此錯誤 - 它必須是長時間的任務。爲什麼我會在Chrome上獲得「ERR_RESPONSE_HEADERS_TOO_BIG」?
請誰能解釋我如何避免這個錯誤?如果我「回聲」 - 在ob_end_clean()之後,錯誤消失。
<?php
ini_set('max_execution_time', 600);
function FileItemsCount($it, &$count_ref)
{
foreach ($it as $file)
{
$count_ref += 1;
ob_start();
session_start();
$_SESSION['progress'] = $count_ref;
session_write_close();
ob_end_clean() ;
$is_folder = $it->hasChildren();
if ($is_folder)
{
FileItemsCount($it->getChildren(), $count_ref);
}
}
}
$dir = "C:/Users/sstefanov/xampp";
$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
$count = 0;
FileItemsCount($it, $count);
echo $count;
?>
我'd懷疑這是因爲你每次都會在循環中打開和關閉會話(爲什麼你會這樣做?) - 那可能會導致session_start每次都會生成一個新的SetCookie頭文件,因此Chrome會生氣...... – CBroe
CBroe是正確的,瀏覽器將接受的標頭數量有限制。這也意味着您可以創建的cookie數量受到限制。 – DCoder
我是C++程序員,爲了在並行php進程間同步$ _SESSION ['progress']變量,我想到了session_start()/ session_write_close()作爲Enter/Leave critical_section。可能是我錯了,但無法找到在PHP中同步化的其他方式。 – netanalyzer