代碼大概是這樣的:
public function test(){ for ($i=0; $i < 90260; $i++) { $a = findappbyid($i); print_r($a); print($i); } }
大概查10個資料左右,就會出現:
Fatal error: Maximum execution time of 30 seconds exceeded in xxxx
有沒有什麼比較好的辦法讓他一邊運行一邊輸出結果(現在是運行完一下子出現資料和上述錯誤),而不會出現因為已耗用時間過長產生錯誤呢?
回複內容:
代碼大概是這樣的:
public function test(){ for ($i=0; $i < 90260; $i++) { $a = findappbyid($i); print_r($a); print($i); } }
大概查10個資料左右,就會出現:
Fatal error: Maximum execution time of 30 seconds exceeded in xxxx
有沒有什麼比較好的辦法讓他一邊運行一邊輸出結果(現在是運行完一下子出現資料和上述錯誤),而不會出現因為已耗用時間過長產生錯誤呢?
我勒去,這個什麼商務邏輯啊!如果 findappbyid 查資料庫的話,純粹是看資料庫不爽啊
ob_end_flush();ob_implicit_flush(true);for ($i=0; $i < 90260; $i++) { $a = findappbyid($i); print_r($a); print($i);}ob_end_flush();ob_implicit_flush(false);
php的配置裡預設的執行時間是30秒,30秒對於一般的也足夠了。
你可以在你的程式裡添加set_time_limit(3600)臨時改變程式的執行時間。
或者ini_set("max_execution_time", "3600")。
如果你的是本地測試的機器,也可以將php.ini中的max_execution_time = 30中的30改成3600,或者更大的數,然後重啟服務。
可以建立一個阻塞隊列,把迴圈的次數變成隊列的長度,單次執行的放到隊列的節點中去做