Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在代码执行的每个步骤后显示消息_Php - Fatal编程技术网

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保留缓冲区,而不是在请求时刷新缓冲区。有人请指导如何使其实时。。