2014-02-20 56 views
1

我有一個長期運行的PHP腳本,其中設置了set_time_limit(0)。它對15 minutes (900 sec)非常有用,但後來變得非常奇怪:第二個過程使用相同的參數開始!我看到它,因爲我正在腳本的開頭創建一個新的日誌文件,並且有兩個日誌文件處理相同的數據!PHP腳本重複

BTW腳本從PHP後臺運行與

exec('wget http://example.com/script.php?id=NNN > /dev/null &'); 

該指令通常只運行一次,我不能得到什麼900 seconds(確切的時間)後運行它第二次。

+0

是你的PHP在安全模式下運行?因爲在安全模式下,您不能影響最大執行時間。 還有什麼是你的會話的一生?也許會話超時。 –

+0

@ i-CONICA PHP5.4沒有安全模式。並且set_time_limit(0)運行良好,因爲第一個腳本實例沒有停止,它們一直運行直到結束。 PHP會話根本不在這裏使用。 – Epsiloncool

回答

1

這是因爲wget的讀取時間限制爲900秒。到達後,重新下載。 您可以使用--timeout = seconds或--read-timeout = seconds參數來設置更高的超時時間。 或者,你可以直接從shell啓動它(這種方式要好得多)。 這裏是一個鏈接:wget download options 這裏是shell代碼(對於Linux):

exec('php yourscript.php > /dev/null 2>&1 &'); 
+0

謝謝,問題肯定在wget中,但是我將它踢出來並在命令行使用下重新創建整個腳本。現在它效果很好!非常感謝,親。 – Epsiloncool