2016-02-28 23 views
1

是否有固定的時間段作爲後臺任務多久可以運行?Linux的後臺任務的最大處理時間

我有一個用yii框架開發的系統。我有一個後臺任務,當用戶上傳一個csv文件時觸發。一個csv文件最多可以有20 000個用戶記錄。每個用戶記錄大約20-30列。手動設置(包括自定義列)

這是我如何運行腳本(後臺任務):

php /var/www/html/digitalebox_v2/console.php massbulkinsert azraar.digitalebox.fr 10 > /dev/null & 

由於這個過程中巨大的數據集,大約需要3個小時完成。所以我很困惑,如果在Linux上有任何默認的限制,一個進程可以運行多長時間。

我不知道,兩次運行時,腳本退出處理時通過11,000條記錄。第一次停在第10100記錄。第二次停在第9975紀錄。它沒有終止的模式。我已經100%驗證了它不是由於數據問題。因爲相同的數據在分解爲2個獨立文件並上傳時起作用。

什麼可以造成這樣的麻煩?我的注意力集中在頂層命令上,而且大多數時間,mysql pid分別爲98和100%,130%,可用內存大約爲200 MB。硬盤中還有足夠的空間。我不知道它如何終止在中間,最後一點。

感謝任何有關如何解決此問題的建議,因爲它需要很長時間才能完成,到那時我需要等待。

+1

@Nordenheim,對於CLI,max_execution_time默認爲0(無限制)。 – Devon

+1

你說過你在監視系統,但看起來你只是在監視負載。你在腳本中做了哪些實際的調試?你有沒有設置異常/錯誤處理?你檢查過系統日誌嗎? – Devon

+0

@Nordenheim max_execution_time已經是0 –

回答

2

它有點瘋狂的猜測,但通常當你用少量的數據成功 - 然後大量崩潰,它與內存問題有關。

你應該看看/ etc/php5/cli。可能還有一個名爲cgi inthere的文件夾 - 具體取決於您的框架如何執行後臺腳本,我期望使用這兩種配置中的任何一種。

文件與擴展名爲「INI」是PHP腳本配置,而這些是你感興趣的值中(值是Debian的默認8):

; Maximum execution time of each script, in seconds 
; http://php.net/max-execution-time 
; Note: This directive is hardcoded to 0 for the CLI SAPI 
max_execution_time = 30 


; Maximum amount of memory a script may consume 
; http://php.net/memory-limit 
memory_limit = -1 

注意,有還爲腳本可以有多長花,通讀發送給它的數據超時,說管(max_input_time)。但看到你的命令,你不會通過標準輸入輸出值 - 但最有可能讀取磁盤上已有的文件。

希望它有幫助