2012-12-09 154 views
5

我正在使用Laravel,我需要输出数据。当我尝试在Laravel外部加载页面时,它工作得很好。如果我在Laravel中使用它,它不会刷新,它会一直等到结束并打印结果。PHP flush()不适用于laravel?

view.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(); 
?> 
+0

PHP从来没有擅长这一点 - 从来没有真正为它设计的,是服务器端的,你有没有考虑另一种方法 – 2012-12-09 19:23:19

+0

最喜欢的框架,从意见的输出包含OB内_ *()调用允许诸如压缩,更好的错误处理以及在打印完数据后设置HTTP标头等功能。完成这一切后,它会输出数据。所以把你自己的ob_ *()调用不会突破外部的。 –

+1

那么我有什么选择? – luckytaxi

回答

5

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

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";