TP6中定时任务加锁解决进程数过多的问题

我们在TP6中使用计划任务的时候,经常会因为实际的操作时长大于计划任务的周期时长,比如设置的计划任务是每一小时一次,但是实际业务时长会超过1个小时,这样进程就会一直被挂在后台,久而久之,服务器就会被这些进程占用的越来越多,导致服务器越来越卡。
这时候我们会在计划任务的类中加入以下代码

    protected $fd;
    public function __construct()
    {
        parent::__construct();
        $this->fd = fopen('./runtime/PushTcCall.lock','aw');
        if (!flock($this->fd,LOCK_EX|LOCK_NB)){
            echo "加锁失败 进程正在执行";
            exit;
        }
    }

这样每次去执行计划任务的时候,去初始化构造方法,构造方法里面会使用flock这个方法判断这个文件是否容许加锁,如果上一个脚本还未执行完成,说明进程正在执行,加锁会出现失败,并退出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值