为什么我在chrome上获得“ERR_RESPONSE_HEADERS_TOO_BIG”?

时间:2013-06-19 08:42:08

标签: php google-chrome

以下代码在firefox上正确执行,但在Chrome上无法执行。后面总是显示“ERR_RESPONSE_HEADERS_TOO_BIG”。当我遍历包含超过10000个项目(文件)的文件夹时会发生此错误 - 它必须是长任务​​。

请任何人解释我如何避免此错误?如果我在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;

?>

2 个答案:

答案 0 :(得分:13)

对于那些会搜索答案的人来说,有些人会进行尸体解剖:)

我尝试做类似的事情 - 取消阻止并行的ajax请求,其中一个请求长操作,另一个请求检查进度。 我每次都开始会话以写入新值并在之后立即停止。我在Chrome中也遇到了ERR_RESPONSE_HEADERS_TOO_BIG错误。

原因是PHP在我的情况下为每个会话启动发送了Set-Cookie标头。当ajax请求完成时,服务器会将所有Set-Cookie标头发送到浏览器。

要解决此问题,我通过调用删除了Set-Cookie标头 输出前header_remove('Set-Cookie');

答案 1 :(得分:0)

在这个问题中并非如此,但我认为如果服务器打印/回显太多数据(例如用于调试目的),分享这个错误也会很有用。