2016-04-07 84 views
0

我有一個PHP腳本,它從遠程主機獲取mysql表並將它們插入本地數據庫。1分鐘後500服務器錯誤

我需要腳本運行無限的時間,但它會在60秒後繼續發出500服務器錯誤。

我曾試圖改變INI瓦爾像這樣:

ini_set('max_execution_time', 0); 
ini_set('max_input_time', -1); 
ini_set('default_socket_timeout', 15); 
ini_set('mysql.connect_timeout', 15); 
set_time_limit(0); 

而且也將它們設置在php.ini。打印配置變量時,我可以看到這些更改生效。但是,我的腳本在執行60秒後仍然持續500。

我錯過了什麼?

編輯

我不相信在鏈接的「重複」的問題提出這次能有什麼做的任何大小限制。這是因爲在運行此腳本時,我在數據庫上的結果非常不同,有時會插入100.000行,有時會插入300.000,並且每次都會在幾乎完全60秒的時間內顯示錯誤。

我刪除了數據庫腳本,只運行了睡眠(70)來查看上面設置的時間限制發生了什麼,並且該腳本在60秒後仍然會發出500錯誤。

UPDATE

這是奇怪的,如果我的瀏覽器指向到腳本並運行它,在60秒後停止。但是,如果我在得到錯誤之前關閉瀏覽器,腳本將繼續在服務器上運行。

+1

可能重複的[PHP腳本停止360秒後,並顯示大型文件500服務器錯誤](http://stackoverflow.com/questions/14601330/php-script-stops-after-360-seconds-and-shows -500-server-error-for-large-files) –

+0

您是否正在更改遠程服務器或本地主機上的配置?因爲看起來你試圖做的事情,你需要改變兩者的設置。但是,您可能希望將腳本調整爲不會嘗試運行超過60秒。 –

+1

如果您在運行代碼之前執行「sleep(50)」,您會在60秒後仍然出現錯誤,或者您會在110秒後得到一個錯誤嗎? – apokryfos

回答

1

好的,我希望這可以幫助其他人得到同樣的噩夢般的問題。

長時間運行腳本但沒有輸出時會出現此問題。我簡單地通過確保腳本每隔幾秒輸出一些內容來修復它。對我來說,它是:

$counter = 0; 
while($continue === TRUE){ //The long loop 
    if($counter%1000==0) echo '.'; //write out a dot every 1000 iterations 
    $counter ++; 
    //Code... 
} 

我一個提示我的問題就在這裏: https://serverfault.com/questions/277386/apache-2-2-cgi-timeout-configuration

這是一些關於如何超時由阿帕奇如果沒有從腳本輸出的秒數推斷(對我來說是60)。

你可以在某些配置文件中修復這個問題,所以你不必做上面的黑客攻擊。