2012-12-09 16 views
5

Sto usando Laravel e ho bisogno di dati in uscita come succede. Quando provo a caricare la pagina all'esterno di Laravel, funziona perfettamente. Se lo uso in Laravel, non scarica, attende fino alla fine e stampa i risultati.PHP flush() non funziona con 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 non è mai stato bravo in questo - e non è mai stato realmente progettato per questo, essendo sul lato server, avete considerato un altro approccio –

+0

Come la maggior parte dei quadri l'uscita dalle viste sono contenute all'interno di ob _ *() chiama a consente funzionalità come la compressione, una migliore gestione degli errori e l'impostazione delle intestazioni HTTP dopo la stampa dei dati. Dopo tutto ciò che è fatto, quindi produrrà i dati. Quindi, la tua chiamata ob _ *() non uscirà da quella esterna. –

+1

quindi quali opzioni ho? – luckytaxi

risposta

5

capito, avevo bisogno di aggiungere ob_flush();

0

Questa sequenza ha funzionato per me.

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