執(zhí)行php artisan queue:work
后任務始終在pending里面不執(zhí)行. 這個問題很莫名奇妙找不到問題
后來發(fā)現(xiàn)是redis庫的問題
在job文件構造方法加入 Redis::select(0);
2022年7月21日更新
不是redis的問題(下面有最新更新), 是horizon
的問題, 需要再執(zhí)行php artisan horizon
重要的事情說三遍
執(zhí)行: php artisan horizon
執(zhí)行: php artisan horizon
執(zhí)行: php artisan horizon
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(array $data)
{
Redis::select(0);
}
2022年8月6日 更新
突然又莫名其妙的不執(zhí)行了, 經過一天的排查, 發(fā)現(xiàn)在php artisan queue:work
啟動的時候會 執(zhí)行框架的一些文件, 而我在文件里面 切換了redis 10庫. 所以消費隊列就去 redis 10庫進行消費, 而我隊列的數(shù)據都存儲在redis 0庫, 導致隊列一直在pending不執(zhí)行
2022年9月30日 更新 (未解決)
項目正常跑了3個月. 突然在毫無征兆的情況下出現(xiàn): Model在隊列里面查詢數(shù)據為空(實際情況是該數(shù)據一直存在), 經過大量的測試復現(xiàn)了下面2種情況
第一種情況: $order = Order::query()->where(['id' => $order_id])->first();
執(zhí)行之后 $order
為空, 2秒后再次執(zhí)行, $order
有值
第二種情況: $order = Order::query()->where(['id' => $order_id])->first();
執(zhí)行之后 $order
有值, 隔幾分鐘后再次執(zhí)行 $order
為空
只有在隊列里面才出現(xiàn), 其它業(yè)務是正常的. mysql 沒有報錯. 隊列也沒有報錯.
文章傳送門: Model在隊列查詢數(shù)據為空