測試環境 PHP version 5.3.29/5.6.29/7.1.0 Apache/2.4.25 (Win32) mod_fcgid/2.3.9
Apache使用mod_fcgid 配置php出現的問題:在php.ini中配置output_buffering = Off或者output_buffering = 4096 均不能使用ob_flush()和flush()刷出緩沖區內容
在php.ini中設置緩沖區output_buffering = 4096 ;開啟php緩沖區output_buffering = Off ;關閉php緩沖區查找官方文檔發現,FcgidOutputBufferSize配置信息如下:mod_fcgid document
Description: CGI output buffer sizeSyntax: FcgidOutputBufferSize bytesDefault: FcgidOutputBufferSize 65536Context: server config, virtual hostStatus: ExternalModule: mod_fcgidApache mod_fcgid模式默認為開啟buffer,所以在Apache配置文件httpd.conf 中設置 FcgidOutputBufferSize 0
測試要求在瀏覽器中間隔一秒出現一個數字: 一次php代碼文件請求涉及兩個緩沖區:
php緩沖區:php編譯生成的靜態內容首先被php緩沖區收集,之后再對外輸出; browser緩沖區:從服務器過來的內容到達瀏覽器里邊的時候,首先被瀏覽器緩沖區收集,收集滿之后再逐漸展示到頁面上; <?php //提前開啟緩沖區,在php.ini中配置output_buffering = 4096; //提前開啟緩沖區,或者在運行時設置ob_start(); for($i=0;$i<5;$i++){ echo $i,'<br/>'; ob_flush(); //刷出php緩沖區內容 flush(); //刷出瀏覽器緩沖區內容 sleep(1); }新聞熱點
疑難解答
圖片精選