个人简单实现的定时执行任务PHP简单写法

<?php

namespace Home\Controller;

use Think\Controller;

class TaskController extends Controller {

   
   
   public function index(){
       //对积分进行解冻
        header("Content-Type:text/html; charset=utf-8");
        $kg='./task.t';
        if(!file_exists($kg)){
            $this->jd();
            file_put_contents($kg,'');
        }else{
            $ftime=filemtime($kg);
    
            if(date('Ymd',$ftime)==date('Ymd')){
                exit('今日已运行,上次运行时间:'.date('Y年m月d日 H:i:s',$ftime));
            }
            //判断时间是否在1点
            if(date('H',time())>1){
                exit('积分解冻时间已过!');
            }
            $this->jd();
            touch($kg);
        }

    }
    private function jd(){
       //对积分进行解冻
        ignore_user_abort(true);
        set_time_limit(0);
        $M_u =M('user');
        //获取对冻结积分大于0的进行解冻
        $uInfo=$M_u->where('`dj_integral`>0')->select();
        if($uInfo){
            foreach ($uInfo as $row){
                $sql = "update __USER__ set `UE_integral`=`UE_integral`+{$row['dj_integral']},`dj_integral`=`dj_integral`-{$row['dj_integral']} where `UE_ID`={$row['ue_id']}";
//实例化model对象,执行execute方法,返回影响行数
                $M_u->execute($sql);
                echo '已解冻用户'.$row['ue_account'].'积分'.'<br/>';
            }

        }else{
            exit('当前没有可解冻的积分!');
        }
    }  
   
}

然后就可以放入执行任务中,定时执行。比如添加到宝塔的计划任务中

image.png

支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享