最近遇到PHP程式在執行大量資料的時候提示逾時,於是用到了set_time_limit()函數來設定PHP頁面的最大運行時間。
設定允許腳本運行的秒數。如果這是預設的,該腳本會傳回一個致命的錯誤。預設限制為30秒,或者也可以在php.ini定義max_execution_time來設定PHP頁面的最大執行時間。
在呼叫時,set_time_limit()函數從零重新啟動超時計數器。換句話說,如果逾時預設的30秒,25秒到腳本的執行參數或set_time_limit,如設定逾時時間為(20),則該腳本會執行45秒時才會逾時。
set_time_limit(900)這個函數指定了目前所在php腳本的最大執行時間,雖然設定值是900秒,實際上最大執行時間=php.ini裡的max_execution_time數值 - 目前腳本已經執行時間 + 設定值。
假如php.ini裡的max_execution_time=30,目前腳本已經執行10秒,則:
最大執行時間=30-10+900=920秒。
經過如此修改後,PHP腳本成功更新200000筆記錄。
每次我們造訪PHP腳本的時候,都是當所有的PHP腳本執行完成後,我們才得到回傳結果。如果我們需要一個腳本持續的運行,那麼我們就要透過php長連接的方式,來達到運行目的。
每個PHP腳本都限制了執行時間,所以我們需要透過 set_time_limit 來設定一個腳本的執行時間為無限長;然後使用 flush() 和 ob_flush() 來清除伺服器緩衝區,隨時輸出腳本的回傳值。
<?php header("Content-Type: text/plain"); set_time_limit(0); $infoString = "Hello World" . "\n"; while( isset($infoString) ) { echo $infoString; flush(); ob_flush(); sleep(5); } ?>
以上就介紹了PHP中長連結的實現,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。