2012-12-09 7 views
5

Używam Laravel i potrzebuję danych wyjściowych, jak to się dzieje. Kiedy próbuję załadować stronę poza Laravel, działa dobrze. Jeśli użyję tego w Laravel, nie spłukuje się, czeka aż do końca i drukuje wyniki.Funkcja PHP flush() nie działa z programem 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 nigdy nie był w tym dobry - i tak naprawdę nigdy nie przeznaczone dla niego, będąc po stronie serwera, czy za innego podejścia –

+0

Podoba większości ram wyjście z widokiem są zawarte w ob _ *() wzywa do pozwalają na takie funkcje, jak kompresja, lepsza obsługa błędów i ustawianie nagłówków HTTP po wydrukowaniu danych. Po tym wszystkim, co jest zrobione, wtedy wypisze dane. Więc samo twoje wywołanie ob _ *() nie wyjdzie z zewnętrznego. –

+1

więc jakie mam opcje? – luckytaxi

Odpowiedz

0

Ta sekwencja zadziałała dla mnie.

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"; 
Powiązane problemy