6

我正在使用 Laravel,我需要在发生数据时输出数据。当我尝试在 Laravel 之外加载页面时,它工作得很好。如果我在 Laravel 中使用它,它不会刷新,它会等到最后并打印结果。

视图.php

<?php

if (ob_get_level() == 0) ob_start();
for ($i = 0; $i <= 10; $i++){

    echo "<br> Line to show. $i";
    echo str_pad('',4096)."\n";    

    ob_flush();
    flush();
    sleep(1);

}
ob_end_flush();
?>
4

3 回答 3

6

想通了,我需要添加 ob_flush();

于 2012-12-09T22:59:51.497 回答
1

更新,任何来这里的人。

上述解决方案对我不起作用。什么有效,是添加

header('X-Accel-Buffering: no');

在任何输出之前。

在这里找到它:https ://laracasts.com/discuss/channels/laravel/live-output-in-blade-template-ob-flush

于 2021-05-26T08:58:43.317 回答
0

这个序列对我有用。

ob_implicit_flush(true);
echo "Processing ... "; // Or give out JSON output
ob_flush();
sleep(5); //A time-consuming synchronous process (SMTP mail, maybe?)
echo "Done";
于 2017-03-22T06:39:44.393 回答