2012-12-09 40 views
5

Tôi đang sử dụng Laravel và tôi cần xuất dữ liệu khi nó xảy ra. Khi tôi cố gắng tải trang bên ngoài Laravel, nó hoạt động tốt. Nếu tôi sử dụng nó bên trong Laravel, nó không tuôn ra, nó sẽ đợi đến cuối và in kết quả.PHP flush() không hoạt động với 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 chưa bao giờ giỏi trong việc này - và không bao giờ thực sự được thiết kế cho nó, là server-side, có bạn xem là cách tiếp cận khác –

+0

Giống như hầu hết các khuôn khổ đầu ra từ các quan điểm được chứa trong ob _ *() các cuộc gọi đến cho phép các tính năng như nén, xử lý lỗi tốt hơn và đặt tiêu đề HTTP sau khi dữ liệu đã được in. Sau khi tất cả được thực hiện nó sau đó sẽ xuất dữ liệu. Vì vậy, việc đặt cuộc gọi ob _ *() của riêng bạn sẽ không thoát ra ngoài cuộc gọi bên ngoài. –

+1

vậy tôi có những lựa chọn nào? – luckytaxi

Trả lời

5

đặn nó ra, tôi cần phải thêm ob_flush();

0

Trình tự này làm việc cho tôi.

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"; 
Các vấn đề liên quan