2017-08-07 86 views
2

有時,當我通過一個大型數據集發送給Job時,隊列工作者突然退出。Laravel隊列「遇難」

// $taskmetas is an array with other arrays, each subsequent array having 90 properties. 
$this->dispatch(new ProcessExcelData($excel_data, $taskmetas, $iteration, $storage_path)); 

ProcessExcelData作業類創建使用box/spout軟件包的Excel文件。

    在第一例子 $taskmetas
  • 有880行 - 在第二個例子$taskmetas工作正常
  • 有10,000行 - 出口突然

1例 - 用小輸出隊列數據集:

[email protected]:~/myapp.com$ php artisan queue:work --tries=1 
[2017-08-07 02:44:48] Processing: App\Jobs\ProcessExcelData 
[2017-08-07 02:44:48] Processed: App\Jobs\ProcessExcelData 

第二個示例 - 一個大的數據集輸出隊列:

[email protected]:~/myapp.com$ php artisan queue:work --tries=1 
[2017-08-07 03:18:47] Processing: App\Jobs\ProcessExcelData 
Killed 

我沒有得到任何錯誤消息,日誌是空的,且作業不會在failed_jobs表與其他錯誤出現。時間限制設置爲1小時,內存限制爲2GB。

爲什麼我的隊列突然退出?

+0

提到你有沒有設法解決這個問題,我們將強制覆蓋超時? –

+0

@DaveCarruthers nope – PeterInvincible

回答

2

您可以嘗試給超時。 例如。 PHP工匠隊列:工作--timeout = 120

默認情況下,超時時間爲60秒,所以上述

+0

時間限制設置爲1小時 - 作業在5分鐘內死亡。 – PeterInvincible

+0

然後在你的情況下,代碼或內存問題可能會有一些問題 –