php的flush和ob_flush不起作用?
作者: 鄭曉 分類: PHP 發(fā)布于: 2016-04-08 08:55 瀏覽:8,402 評(píng)論(3)
我的基礎(chǔ)環(huán)境是nginx1.6.2+php5.3
做一個(gè)逐行輸出,使用ob_flush時(shí)試了N種方法不起作用,比如下面的代碼:
.......";
ob_flush();
flush();
sleep(1);
}
?>
谷歌了不少的寫法都不行,所以問題應(yīng)該出在了環(huán)境配置上而不是使用方法上。
話說還是stackoverflow給力,搜索“php flush not working”找到了一個(gè)正確的解決方法:
檢查nginx配置文件(nginx.conf),禁用nginx的buffering:
proxy_buffering off;
gzip off;
fastcgi_keep_conn on;
要注意最后這句fastcgi的哦~~
檢查php.ini,禁用buffering:
output_buffering = off
注意這句配置不能通過ini_set()函數(shù)動(dòng)態(tài)在程序中設(shè)置,這在php官方手冊(cè)中有說明:
the output_buffering setting is PHP_INI_PERDIR therefore it may not be set using ini_set()
經(jīng)過上面兩步的配置(nginx.conf和php.ini)后,重啟nginx就可以了,再次測(cè)試文章開頭的代碼,成功逐行輸出。
本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。
本文永久鏈接: http://yjfs.org.cn/php-flush-ob-flush-notwork.html
贊