我希望能夠讓用戶在腳本完成時查看長時間運行的GCI腳本的輸出,而不是腳本完成後。但是,即使當我明確地清除STDOUT時,服務器似乎也會在將響應發送給客戶端之前等待腳本完成。這是在運行Apache 2.2.9的Linux服務器上。如何從Apache 2提供未緩衝的CGI內容?
例蟒蛇CGI:在Perl
#!/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."
類似的例子:
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
for ($i = 1; $i <= 10 ; $i++) {
print "$i\n";
sleep(1);
}
print "Done.";
此鏈接說像Apache 1.3 CGI輸出的應該是無緩衝(但這可能僅適用於Apache的1.x的):http://httpd.apache.org/docs/1.3/misc/FAQ-F.html#nph-scripts
任何想法?
您也可以潛在地運行到客戶端(瀏覽器)側緩衝的問題。 – Miles 2009-07-25 04:38:50