首頁  >  文章  >  後端開發  >  弱弱的問一個小問題,關於死循環

弱弱的問一個小問題,關於死循環

WBOY
WBOY原創
2016-12-01 00:57:051107瀏覽

寫一段死循環,為什麼再瀏覽器直接就崩潰了,而在命令列下可以繼續執行?只是因為走的協議不一樣嗎?求大神給個詳細的解釋。

<code>while(true){
echo 'a';
}</code>

回覆內容:

寫一段死循環,為什麼再瀏覽器直接就崩潰了,而在命令列下可以繼續執行?只是因為走的協議不一樣嗎?求大神給個詳細的解釋。

<code>while(true){
echo 'a';
}</code>

如果在瀏覽器端測試, 因為PHP有各種快取
你可以先調用一下ob_end_flush
然後在循環中調用flush()
這樣就會有內容出來了
不過你還要考慮php的默認的執行時間, 和瀏覽器的超時機制

cli模式下 PHP的執行時間預設是不受限制的, 而且也沒有預設開啟ob之類的功能

http://www.php100.com/manual/...

覆蓋 php.ini 設定選項

implicit_flush:在命令列模式下,所有來自 print 和 echo 的輸出將立即寫入輸出端,而不作任何地緩衝操作。如果希望延緩或控制標準輸出,仍然可以使用 output buffering 設定項目。

max_execution_time:鑑於在外殼環境下使用 PHP 的無窮的可能性,最大運行時間被設定為了無限值。為 web 開發的應用程式可能只需運行幾秒鐘時間,而外殼應用程式的運行時間可能會長的多。

php.ini的max_execution_time指定了程式執行時間,如果超過了此設置,則腳本傳回一個致命的錯誤。預設值為30秒,而命令列不收此控制。

可以透過set_time_limit(0)沒有時間方面的限制

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