2012-12-09 200 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";