当您在控制台中运行 PHP 脚本时,该脚本的所有标准输出文本都会在脚本运行时显示在控制台窗口中。当运行冗长的 PHP 脚本时,浏览器窗口是否可以类似地接收浏览器中的状态报告,而不是在脚本结束时转储所有输出?
最佳答案
是的。只需定期调用flush()和ob_flush()即可。至少每 120 秒写入一些输出以保持与浏览器的连接非常重要。
一个粗略的例子:
while(!$done) {
//doWork();
echo number_format(100 * ($workDone/$workTotal)) . "% ";
flush();
ob_flush();
}
编辑:这是在我的环境中有效的任意概念证明:
print('hello');
print(str_repeat(".\n", 2048));
flush();
//this might be a safe way to only flush the buffer if necessary?
if(ob_get_length())
ob_flush();
sleep(60);
关于php - Web 服务器是否可以响应具有延长时间的输出流的 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5709462/