【发布时间】:2011-07-21 21:38:19
【问题描述】:
现在为了查看结果,我必须等到整个代码执行完毕。它挂起直到完成并保持加载。完成后,它会显示我正在寻找的所有信息。在脚本仍在运行时是否有任何显示?所以说如果我在代码顶部的某个地方打印,我希望它显示它何时被调用,而不是在脚本执行完成时显示。
有人知道怎么做吗?
谢谢
【问题讨论】:
-
你说的是ajax还是php
标签: php
现在为了查看结果,我必须等到整个代码执行完毕。它挂起直到完成并保持加载。完成后,它会显示我正在寻找的所有信息。在脚本仍在运行时是否有任何显示?所以说如果我在代码顶部的某个地方打印,我希望它显示它何时被调用,而不是在脚本执行完成时显示。
有人知道怎么做吗?
谢谢
【问题讨论】:
标签: php
我必须同时输入ob-flush 和flush,如this example 所示:
for($i=10; $i > 0; $i--)
{
echo "$i ...";
flush();
ob_flush();
sleep(1);
}
【讨论】:
这个对我有用:(source)
function output($str) {
echo $str;
ob_end_flush();
ob_flush();
flush();
ob_start();
}
【讨论】:
您可以通过输出缓冲来做到这一点。使用ob_start() 在脚本顶部打开输出缓冲。这使得 PHP 不会向浏览器发送任何输出。相反,它存储在内部。
随时使用ob_flush() 刷新您的输出,内容将发送到浏览器。
但请记住,输出缓冲受许多其他因素的影响。我认为某些版本的 IIS 会等到脚本完成,而忽略输出缓冲。客户端上的一些防病毒软件(它是 Panda 吗?)可能会等到页面完全加载后再将其传递给浏览器。
【讨论】:
你可以像这样使用output buffering:
ob_start();
echo('doing something...');
// send to browser
ob_flush();
// ... do long running stuff
echo('still going...');
ob_flush();
echo('done.');
ob_end_flush();
【讨论】:
ob_implicit_flush(true) 之前添加ob_start() 之后它对我有用;
flush(); 在某些网络服务器中,ob_flush() 并不意味着它将缓冲区输出到 apache。 flush