簡體   English   中英

Laravel 5 隊列作業凍結

[英]Laravel 5 queue job freezes

我正在執行一個處理上傳文件的命令。

這些文件最多可包含 300MB 的數據,因此作業需要排隊,我還預計需要一段時間才能完成。

我的問題是,當我運行php artisan queue:listen它從隊列中獲取作業,開始正常處理它,但大約 20 秒后,它凍結了。 該作業不會啟動任何異常,也不會繼續,因此不會從隊列中刪除。

我正在使用database驅動程序。 我在這里遺漏了什么嗎?

php artisan queue:listen不會為用戶輸出錯誤。 運行php artisan queue:work它將輸出錯誤。 這個命令只會運行隊列中的一個進程。 因此,您需要確保下一個進程是您要調試的進程。

也許它沒有凍結,但是當您在運行 php artisan queue:work 或 php artisan queue:listen 命令后在命令行界面中看不到任何事情時,它似乎凍結了。

就我而言,

// 在 coomand 行接口上按隊列名稱執行 Laravel 隊列->

我正在使用運行命令php artisan queue:work
它沒有在作業表中運行我排隊的作業。

然后我重新定義,它僅適用於隊列列值 = 'default' 的作業,並且我給出了諸如 sendemail、inboxemail 等名稱。

因此,當我在作業表的隊列列中將此其他值更改為“默認”時,該作業立即運行,因為我打開了 cli 並且 php artisan queue:work 命令處於活動狀態。

因此,如果您只想按隊列名稱運行特定隊列,請運行命令 ->

php artisan queue:listen --queue=sendemail

或者

php artisan queue:listen --queue=inboxemail

對於和我犯同樣錯誤的人,不要根據“工作”表創建表!

它不是 memory 泄漏或某事。 我有另一個表“ job_info ”,其中有一個引用jobs表的外鍵; 事實證明,laravel 無法在成功完成后從表中刪除作業(就像通常那樣)。 那是因為它會破壞數據庫中的關系。 所以它會一直重試,直到超過最大嘗試次數導致異常,而沒有關於實際問題的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM