你们有谁在调度中发送队列,导致withoutOverlapping永久锁死的吗?
首先,配置.env中的CACHE_DRIVER=redis
并且在session和队列也为redis的情况下
然后,在调度中调用withoutOverlapping
例如
$schedule->command(‘chaqi:publish’)->everyMinute()->withoutOverlapping();
在网站访问量很高的情况下,因为SESSION使用的是redis
然后在调度同时使用队列,队列也是用redis
public function handle()
{
$list = ChaqiModel::where(‘try’, ‘<=’ , 2)->get();
foreach($list as $chaqi) {
dispatch(new TaobaoChaqi($chaqi->id, $chaqi->order_id))->onQueue(‘chaqi’);
}
}
很容易导致withoutOverlapping一直锁死啊,你们有谁碰到没
关于 LearnKu
参考下:blog.csdn.net/lamp_yang_3533/artic...
blog.csdn.net/stand_forever/articl...
我用的是Redis,文件反而没碰到过
这样也是麻烦,哎
可以直接清除掉cache
我也遇到类似的死锁问题。但我是在Job里设置了
WithoutOverlapping中间件[0],然后调用了dontRelease()。我感觉任务失败后不会释放锁。[0] learnku.com/docs/laravel/8.x/queue...