Laravel 中设置了withoutOverlapping的定时任务失败后,导致上一个正在执行中的任务没有正常结束,无法重新自动运行的解决方法

本文介绍了解决Laravel框架中定时任务因死锁无法执行的问题,提供了两种方法:一是通过删除mutex标记文件,二是终止异常的php-fpm进程,帮助读者有效处理定时任务的执行障碍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:

rm -rf storage/framework/cache/*

本质是因为意外情况导致上一个正在执行中的任务没有正常结束,更它的mutex标记文件却还在,使得Laravel框架的php artisan schedule:run命令任务该任务还在执行中,所以为了withoutOverlapping,就跳过执行了,在这种情况下,手动将mutex标记删掉就能恢复正常。

mutex标记是受Laravel框架的vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheMutex.php文件控制的,用的是.env中指定的CACHE_DRIVER(对应到config/cache.php中指定的配置),一般默认是file类型,对应到storage/framework/cache目录,所以把该目录的cache都清掉 (我的试了没有用)

方法二:

linux shell脚本 中  输:top命令

查看一直在运行的php-fpm 进程 如899  这个时候执行kill -9 899就杀死这个进程了 

kill -9 加进程号

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值