你们有谁在调度中发送队列,导致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一直锁死啊,你们有谁碰到没

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

我用的是Redis,文件反而没碰到过

3年前 评论
LiamHao 3年前

可以直接清除掉cache

3年前 评论

我也遇到类似的死锁问题。但我是在Job里设置了WithoutOverlapping中间件[0],然后调用了dontRelease()。我感觉任务失败后不会释放锁。

[0] learnku.com/docs/laravel/8.x/queue...

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!