2017-02-26 60 views
0

我有一個問題,即如果沒有響應,偶爾會運行一個腳本(對其他網站有依賴關係)掛起嘗試從這些其他網站檢索元素。我很欣賞我需要再次查看這部分代碼。如何限制CLI PHP腳本的執行時間

但是,與此同時,我想了解爲什麼這些命令,我​​已經嘗試並放在我的PHP代碼的頂部不起作用?

ini_set('max_execution_time', 30); 
set_time_limit(30); 

腳本在PHP完全運行和CLI PHP執行(而不是網頁從瀏覽器啓動)爲:

php /var/www/html/client/index.php 

腳本執行得很好,如果他們中的一個掛起,它會作爲一個進程卡住(通過TOPHTOP查看),並在嘗試執行並且從不關閉時使用資源。

除了我已經嘗試過的方法之外,還有其他方法可以強制腳本停止和關閉嗎?

謝謝。

+1

阻止呼叫,例如。到數據庫或外部來源,不計入執行時間。您最好爲您的外部請求設置合理的超時時間。 –

+0

可能的重複:http://stackoverflow.com/questions/10587323/timeout-a-function-in-php#10587359 – avysk

回答

0

您正在使用set_time_limit(30);,這會增加執行腳本的時間。閱讀其文檔here

如果您將該行加入循環,則您將在每次傳遞時爲腳本執行時間限制添加時間。

CLI的默認時間限制爲0,這是無限的。使用相同的方法,但只是在腳本的開始,並確保不在任何循環內或通過遞歸多次執行等。

這應該解決問題。

+0

你好,感謝您的回覆。我在頁面頂部有這條線,所以它只執行一次而不是循環的一部分。除非我誤解,並且您的意思是每次腳本(該行出現時)都會增加所有其他腳本的時間?我現在要檢查doco,謝謝。 – omega1