2013-04-02 66 views
34

我需要運行一個腳本到localhost(xampp),它將生成14400條記錄並將它們添加到數據庫中,我已經設置了max_execution_time = 50000000000,我不知道是否可以通過將其設置爲0或-1。但是我之前用這個腳本嘗試了這個max_execution_time到50000000000,但它在某個點停住,我不知道還有什麼可以限制執行時間,我已經運行了很多次,我厭倦了等待和再次失敗,在我再次運行這個腳本之前,我應該改變這個時間來完成這個工作嗎?使腳本執行無限制

+0

從命令行調用它,沒有時間限制 – 2013-04-02 23:42:57

+1

''set_time_limit(0)'在腳本開始時會禁用時間限制。但你可以有其他原因提前停止。這可能是數據庫的問題或內存問題(如果您正在創建大量對象)。檢查PHP的錯誤日誌。 – MatRt

+0

它停在哪裏(插入多長或多少行)?每次都一樣還是波動?任何在PHP錯誤日誌? –

回答

89

您必須將其設置爲零。零表示腳本可以永久運行。添加下面的腳本的開始:

ini_set('max_execution_time', 0); 

參考的max_execution_time

注意,PHP文件:

set_time_limit(0); 

將有同樣的效果。

+1

如果我將它設置爲php.ini文件爲0,該怎麼辦?它會生效嗎? – TooCooL

+4

是的,但我不會在全球範圍內設置。這意味着例如無限循環(未測試的腳本或黑客)可能會掛起服務器。我會謹慎使用'max_execution_time = 0',並且只在需要時使用。 – hek2mgl

+0

我需要運行它一旦localy它不metter我稍後將改變它,重要的是它應該工作,並不會停止腳本,在它完成添加記錄之前。 – TooCooL

0

您的腳本可能會停止,並不是因爲PHP超時,而是因爲用於訪問腳本(即Firefox,Chrome等)的瀏覽器超時。不幸的是,很少有一種簡單的方法來延長這種超時時間,並且在大多數瀏覽器中你根本無法做到這一點。您在這裏選擇的一個選項是通過終端訪問腳本。例如,在Windows上,你會確保PHP可執行文件在路徑變量,那麼我認爲你執行:

C:\path\to\script> php script.php 

或者,如果你使用的PHP CGI,我認爲它是:

C:\path\to\script> php-cgi script.php 

另外,您還可以在其他人提到的腳本中設置ini_set('max_execution_time', 0);。當以這種方式運行PHP腳本時,我敢肯定,如果您願意,可以使用緩衝區刷新將腳本的進度定期回顯給終端。我認爲使用這種方法最大的問題是,除非停止整個PHP過程或服務,否則在腳本啓動後無法停止腳本。