首頁 >後端開發 >php教程 >php flush無效IIS7下php即時輸出的方法詳解

php flush無效IIS7下php即時輸出的方法詳解

黄舟
黄舟原創
2017-03-29 10:03:131188瀏覽

這篇文章主要介紹了php flush無效,IIS7下php即時輸出的方法,需要的朋友可以參考下

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

for ($i=10; $i>0; $i--)
{
  echo $i.&#39;<br />&#39;;
  @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多個字元才會有這個效果,不行的話自己多嘗試。

以上是php flush無效IIS7下php即時輸出的方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn