2012-12-09 7 views
5

Ich benutze Laravel und ich muss Daten ausgeben, wie es passiert. Wenn ich versuche, die Seite außerhalb von Laravel zu laden, funktioniert es gut. Wenn ich das in Laravel verwende, wird es nicht gespült, es wartet bis zum Ende und gibt die Ergebnisse aus.PHP Flush() funktioniert nicht mit 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 hat nie so gut gewesen - und war nie wirklich dafür ausgelegt, serverseitige ist, haben Sie einen anderen Ansatz als –

+0

Wie die meisten Frameworks die Ausgabe von den Ansichten innerhalb ob enthalten sind _ *() ruft ermöglichen Funktionen wie Komprimierung, bessere Fehlerbehandlung und HTTP-Header festlegen, nachdem Daten gedruckt wurden. Nach all dem wird es die Daten ausgeben. Also wird der Aufruf von ob _ *() nicht aus dem äußeren herausbrechen. –

+1

also welche Möglichkeiten habe ich? – luckytaxi

Antwort

5

es heraus, musste ich hinzufügen ob_flush();

0

Diese Sequenz funktionierte für mich.

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