程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php flush無效,IIS7下php實時輸出的方法

php flush無效,IIS7下php實時輸出的方法

編輯:PHP綜合

在一個比較費時的操作中,想把操作記錄在浏覽器上實時顯示出來,用到了flush(),把緩沖中的內容發送到浏覽器。但在iis7裡面用fastcgi模式配置的php怎麼都實現不了,結果總是一起顯示出來。

for ($i=10; $i>0; $i--)
{
  echo $i.'<br />';
  @ob_flush();
  flush();
  sleep(1);
}

上面的代碼在IIS的默認設置下是無法逐漸顯示結果的。解決辦法如下:

打開文件 C:\Windows\System32\inetsrv\config\applicationHost.config ,注意如果你的是64位系統,這個文件就必須用64位的編輯軟件打開,32位的軟件打開會提示文件不存在,就用系統自帶的notepad記事本打開就可以了。找到下面這一段,加入紅色的那段代碼就行了,也就是php這個handler裡面加上responseBufferLimit="0"。

復制代碼 代碼如下:
<handlers accessPolicy="Read, Script">
<add name="PHP_via_FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="E:\PHP\php-cgi.exe" resourceType="Either" responseBufferLimit="0" />

現在你可以試一下,如果還是不行的話把php.ini裡面的output_buffering = Off。

最後一點很重要,在不同的浏覽器中,也用有不一樣的結果。IE裡面應該沒什麼問題了,如果是用chrome的話,每個echo出來的內容必須帶有html,不然也是不行的,還有如果echo的內容太短也是實現不了這個效果的,可以在代碼前先輸出一段空格,如:echo str_pad(' ', 1050); chrome好像要先輸出1000多個字符才會有這個效果,不行的話自己多嘗試。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved