Php 在代码执行的每个步骤后显示消息
我有这样一段代码:Php 在代码执行的每个步骤后显示消息,php,Php,我有这样一段代码: $response = "<div style='font-size:18px;margin-top:2em;text-align:center;color:#173f5f;>"; $response .= "Intializing sequence..."; echo $response; $response .= "Starting compression of folders..."; echo $response; $r
$response = "<div style='font-size:18px;margin-top:2em;text-align:center;color:#173f5f;>";
$response .= "Intializing sequence...";
echo $response;
$response .= "Starting compression of folders...";
echo $response;
$response .= "Compressing all photos now...";
echo $response;
$ph = compress('photos');
$response .= "Photo compression complete.";
$response .= "Compressing all signatures now...";
echo $response;
$sg = compress('signatures');
$response .= "Signature compression complete.";
$response .= "Compressing all excel files now...";
echo $response;
$excel = compress('uploads');
$response .= "Excel files compression complete.</div>";
echo $response;
$response=“我认为其他人没有抓住问题的重点。您希望每行的每一行都在脚本处理时“实时”显示,而不是在执行完成时显示。
默认情况下,PHP在脚本执行完成或缓冲区已满之前不会输出缓冲区
当需要使用此功能时,可以手动将缓冲区刷新到屏幕
function fcflush()
{
static $output_handler = null;
if ($output_handler === null) {
$output_handler = @ini_get('output_handler');
}
if ($output_handler == 'ob_gzhandler') {
// forcing a flush with this is very bad
return;
}
flush();
if (function_exists('ob_flush') AND function_exists('ob_get_length') AND ob_get_length() !== false) {
@ob_flush();
} else if (function_exists('ob_end_flush') AND function_exists('ob_start') AND function_exists('ob_get_length') AND ob_get_length() !== FALSE) {
@ob_end_flush();
@ob_start();
}
}
您可以在代码中这样使用它
echo "<div style='font-size:18px;margin-top:2em;text-align:center;color:#173f5f;>";
fcflush();
echo "Intializing sequence...";
fcflush();
echo "Starting compression of folders...";
fcflush();
echo $response .= "Compressing all photos now...";
fcflush();
$ph = compress('photos');
echo "Photo compression complete.";
fcflush();
echo "Compressing all signatures now...";
fcflush();
$sg = compress('signatures');
echo "Signature compression complete.";
fcflush();
echo "Compressing all excel files now...";
fcflush();
$excel = compress('uploads');
echo "Excel files compression complete.</div>";
fcflush();
echo“你说得对。我明白我真正想要的是什么,实时消息输出,但我尝试了你的代码,当浏览器指向这个php代码时,点击按钮后,它再次以一束的形式结束,这次甚至没有显示任何内容。只要你调用函数并且函数在你的代码中,它就不应该显示任何内容。如果是,那么您是在运行某种形式的缓存,还是在代码的其他地方设置缓冲?fcflush()函数强制将缓冲区刷新到屏幕上,因此在处理过程中呈现实时的外观。不,dave,我没有运行任何类型的缓存,该函数在代码内部非常好,函数是在上面的代码之后编写的,它仍然执行函数,但不显示任何内容,即使是在一堆中也不显示,更不用说实时wierd实际上只是在windows机器上测试了它,在处理完成之前它不会刷新缓冲区,但在linux机器上它运行良好,并在每一次测试中输出每一行循环,而不是一次完成所有操作。这一定是某种配置问题,不完全确定代码所做的一切都是一个很好的包装器函数,可以刷新所有的php缓冲区以显示屏幕除了在你(和我在windows上)身上发生的事情之外,没有什么特别的事是php保留缓冲区,而不是在请求时刷新缓冲区。有人请指导如何使其实时。。