![](/img/trans.png)
[英]How can I use & set cookies whilst inside a Laravel queued Job, and why is my current solution failing?
[英]How can I learn more about why my Laravel Queued Job failed?
情況
我正在使用 Laravel 隊列來處理大量媒體文件,一項單獨的工作預計需要幾分鍾(最多可以說一個小時)。
我正在使用 Supervisor 來運行我的隊列,我一次運行 20 個進程。 我的主管配置文件如下所示:
[program:duplitron-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/duplitron/artisan queue:listen database --timeout=0 --memory=500 --tries=1
autostart=true
autorestart=true
user=duplitron
numprocs=20
redirect_stderr=true
stdout_logfile=/var/www/duplitron/storage/logs/duplitron-worker.log
在我的duplitron-worker.log
,我注意到Failed: Illuminate\Queue\CallQueuedHandler@call
偶爾會發生,我想更好地了解到底是什么失敗了。 我的 laravel.log 文件中沒有任何內容(這是通常會出現異常的地方)。
問題
有沒有一種方便的方法可以讓我更多地了解導致我的工作失敗的原因?
在較新的 Laravel 版本中, failed_jobs
表中有一個exception
列,其中包含您需要的所有信息。 感謝 cdarken 和 Toskan 指出這一點!
==== 下面是舊方法
這是我一直做的,但首先 - 確保你有一個失敗的工作表,它有很好的記錄:查一下 :)
運行php artisan queue:failed
命令列出所有失敗的作業,然后選擇您想要的作業。 記下ID。
然后,確保使用supervisorctl stop all duplitron-worker:
最后,確保APP_DEBUG
= true 的 your.env 設置。
然后運行php artisan queue:retry {step_job_1_id}
現在手動運行php artisan queue:listen --timeout=XXX
如果錯誤是結構性的(大多數是),您應該在日志文件中看到帶有調試堆棧的失敗。
祝調試順利:-)
正如@cdarken 指出的那樣,異常可以在你的數據庫表failed_jobs
column name exception
中找到。 謝謝@cdarken 我希望他的回答是一個答案而不是評論。
failed_jobs
php artisan queue:failed-table
php artisan migrate
運行隊列工作者php artisan queue:work --tries=2
檢查您剛創建的數據庫表failed_jobs
中的異常原因。
如果您使用的是數據庫而不是轉到 failed_jobs 表並在那里查找異常。
為我工作,在 vendor/laravel/framework/src/Illuminate/Notifications/SendQueuedNotifications.php 中只需刪除“use Illuminate\Queue\SerializesModels;” 第 6 行 & 修改第 11 行為“使用 Queueable;”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.