Tôi có một đối tượng cho nhiệm vụ và trên __deconstruct(), nó có nghĩa là chạy một số tác vụ dọn dẹp dài hơn sau khi phần còn lại của trang đã được tải. Thật không may, nó đệm đầu ra và sẽ không gửi nó cho đến khi các tác vụ được hoàn thành (không có gì được in trong các tác vụ).Vô hiệu hóa bộ đệm đầu ra trong PHP
Tôi đã đọc qua http://www.php.net/flush và đã thử tất cả các đề xuất ở đó. Rõ ràng là tôi đã thử vô hiệu hóa output_buffering trong php.ini. Tôi đã vô hiệu hóa deflate_module, nén zlib bị tắt, không có mod_gzip. Gọi flush() hoặc ob_flush() không có hiệu lực, cũng như không cho phép implicit_flush.
Tôi chỉ đang chạy XAMPP (hiện tại là apache 2.2.17, php 5.3.4) trong Windows Server 2008 R2. PHP đang được chạy như một mô-đun. Và có, tôi có thể thiết lập một số AJAX hack nhỏ để chạy trình quản lý tác vụ hoặc thậm chí thiết lập một tác vụ theo lịch trình để chạy tác vụ cụ thể này, nhưng bộ đệm đầu ra cũng là một vấn đề ở nơi khác. Đôi khi chỉ muốn nó biến mất.
Từ một sợi tương tự, có người đề nghị nhìn thấy những gì sau đây sẽ làm:
<?php
while (TRUE)
{
echo 'x';
flush();
sleep(1);
}
?>
Đúng như dự đoán, các trang hiển thị không có gì cho đến khi thời gian thực hiện tối đa đạt được, lúc này nó flushes bộ đệm.
Điều này đã trở nên cực kỳ bực bội. Bất cứ ai có bất kỳ ý tưởng những gì vẫn có thể gây ra nó để đệm?
Bạn có thể xác nhận rằng đầu ra vẫn nhận được đệm so với trình duyệt không hiển thị bất kỳ thứ gì (ví dụ: IE sẽ không hiển thị gì cho đến khi nó nhận được một số byte)? –
thực hiện chức năng này http://php.net/manual/en/function.ob-get-level.php return 0? – dqhendricks
bạn có thể thử điều này nếu nó giúp http://in3.php.net/manual/en/function.ob-end-flush.php –