[英]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.