Tôi muốn có thể cho phép người dùng xem đầu ra của tập lệnh GCI dài chạy khi được tạo ra thay vì sau khi tập lệnh hoàn tất. Tuy nhiên, ngay cả khi tôi xóa STDOUT một cách rõ ràng, máy chủ có vẻ như chờ cho tập lệnh hoàn tất trước khi gửi phản hồi cho máy khách. Đây là trên một máy chủ Linux chạy Apache 2.2.9.Làm cách nào để phân phối nội dung không bị chặn của CGI từ Apache 2?
Ví dụ python CGI:
#!/usr/bin/python
import time
import sys
print "Content-type: text/plain"
print
for i in range(1, 10):
print i
sys.stdout.flush()
time.sleep(1)
print "Done."
ví dụ tương tự trong perl:
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
for ($i = 1; $i <= 10 ; $i++) {
print "$i\n";
sleep(1);
}
print "Done.";
Liên kết này nói như Apache đầu ra 1.3 CGI nên không có bộ đệm (nhưng điều này chỉ có thể áp dụng đối với Apache 1.x): http://httpd.apache.org/docs/1.3/misc/FAQ-F.html#nph-scripts
Bất kỳ ý tưởng nào?
Bạn cũng có thể có khả năng được chạy vào client (trình duyệt) các vấn đề đệm -side. – Miles