Laravel中禁用proc_open函数产生了定时任务不能执行的问题
Laravel  /  管理员 发布于 3年前   1243
Laravel 中定时任务功能的底层使用了 Symfony/Process,其中就依赖 proc_open 函数来执行命令
如果被禁用,定时任务就没法用了。
事故举例:
小王有一个稳定运行的 Laravel 项目,
但某天为了加强安全性,就在 PHP.ini 里禁用了一堆函数(网上找来的),其中就包含 proc_open 这些。
后来他突然发现所有的定时任务都没有跑了,
Laravel 日志和 PHP 错误日志也没有任何异常。
后来他猜测应该和函数禁用行为有关,于是还原了配置,可是此时定时任务还是没有运行。
这里的坑就在于他的所有定时任务都设置了withoutOverlapping。
当开启这个设置之后,Laravel 在运行任务时会设置排他锁:
开始的时候检查有没有上锁,有锁则忽略执行,否则就上锁,执行命令,执行结束之后解锁。
上锁当然没问题,可是执行挂了(这里应该是静默失败,普通异常是会被捕捉然后解锁的),
后面就自然没有解锁,所以配置恢复之后,开始执行时发现锁依然存在,是不会实际执行的。
解决方式:
清除cache缓存
php artisan cache:clear
Laravel 的锁使用的系统默认 Cache,
所以只需要去对应 Cache 的 driver 中删掉锁的缓存文件就好了,
或者等待锁过期之后也行(5.5 默认是 24 小时)。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号