在PHP中,不使用输出缓冲,在Chrome中不能写入超过400行

在PHP中,不使用输出缓冲,在Chrome中不能写入超过400行,php,output-buffering,Php,Output Buffering,这是一个打印1000行的简单循环。 在我使用Chrome和Zend服务器的Windows7机器上,它只显示400行,然后停止,没有任何错误 如果我将usleep()中的时间延迟更改为200ms,它将显示600行,然后停止 如果我将set_time_limit()设置为20secs,它将显示大约100行,然后给出错误:“致命错误:最大执行时间限制…” 我是否错过了使执行像那样突然停止的任何系统设置?我查看了日志,没有发现任何错误 <?php // Turn off output buffer

这是一个打印1000行的简单循环。 在我使用Chrome和Zend服务器的Windows7机器上,它只显示400行,然后停止,没有任何错误

如果我将usleep()中的时间延迟更改为200ms,它将显示600行,然后停止

如果我将set_time_limit()设置为20secs,它将显示大约100行,然后给出错误:“致命错误:最大执行时间限制…”

我是否错过了使执行像那样突然停止的任何系统设置?我查看了日志,没有发现任何错误

<?php
// Turn off output buffering and set implicit flush on
@ini_set('implicit_flush', 1);
@ini_set('output_bufferring', 0);
@ini_set('zlib.output_compression', 0);
for ($i = 0; $i < ob_get_level(); $i++)
    ob_end_flush();
// Stop output buffering
ob_implicit_flush(1);

set_time_limit(0);

// MAIN LOOP to print out a line 1000 times 
for ($i=0; $i<1000;$i++) {
    $buf = sprintf("Line %04d ".str_repeat(" ", 1010)."<br>", $i);
    echo "$buf\n";
    usleep(300000);
}

echo "End of execution<br>\n";

?>

听起来您需要设置最大执行时间,ini设置:


如果您无法更改php.ini,请参阅运行时配置中的信息。

因此您正在
休眠
每行输出之间的进程,直到它达到超时限制!PHP在PHP.ini中定义了超时限制,而像Apache这样的Web服务器的默认超时通常为5分钟no!set_time_limit(0)应该将执行超时限制设置为UNLIMITED-usleep(300000)将只休眠1/3秒来打印一行。如果您通过web访问运行此操作,则web服务器的超时不会被任何php.ini设置标记更改-因此无法延长或更改web服务器的超时?我在DOS窗口中运行这个小应用程序。任何关于在Chrome这样的Web浏览器中运行长时间应用程序的建议??您可以通过Web服务器配置文件增加Web服务器超时时间:但如果某个程序需要这么长时间才能运行,那么几乎可以肯定,最好将其作为后台任务提交,通过cron或类似命令行任务运行