执行队列

public function doQueueJobAction(){
    set_time_limit(0);
    ini_set('memory_limit','3072M');    // 临时设置最大内存占用为3G

    $model_queue = new QueueJob();
    $queue_job = $model_queue->getJob();
    $this->getLogService()->info('QueueJobExecute', 'QueueJobDo', '队列任务开始执行' );
    do{
        if(empty($queue_job)){
            break;
        }

        foreach ($queue_job as $queue){
            try{
                $this->getLogService()->info('QueueJobExecute', 'QueueJobDo', '更新队列任务内容:{res='.json_encode($queue).'}' );
                $update = array();
                $job_code = json_decode($queue['jobCode'],true);
                $class = unserialize($job_code['class']);
                $object = new $class(); //实例化对象
                $method = $job_code['method'];  //执行方法
                $param = $job_code['param'];  //执行方法需要的参数
                if(!method_exists($object,$method)){//判断该方法是否存在
                    $this->getLogService()->error($job_code['class'], $method, '该方法不存在' );
                    break;
                }
                $res = $object->$method($param);
                $id = $queue['id'];
                $update['jobNum'] = $queue['jobNum'] + 1;
                if(!$res){//操作失败
                    $update['jobStatus'] = 2;
                    $update['jobError'] = '操作失败';
                }else{
                    $update['jobStatus'] = 1;
                }

                $mix_value = $model_queue->updateById($id,$update);;

                if(!$mix_value){
                    $this->getLogService()->error('QueueJobExecute', $method, '更新队列任务状态失败,{id='.$id.';res='.json_encode($mix_value).'}' );
                    $msg = "队列任务执行状态更新失败<br>队列任务id:".$id."<br>更新数据参数:".json_encode($update)."<br>返回状态:".$mix_value;
                    $this->sendMail($msg);
                }else{
                    $this->getLogService()->info('QueueJobExecute', $method, '更新队列任务状态成功,{id='.$id.';res='.json_encode($mix_value).'}' );
                }

            }catch (\Exception $e){
                $msg = $e->getMessage();
                $this->getLogService()->error('QueueJobExecute', 'QueueJobDo', '更新队列任务执行失败,{'.'msg='.json_encode($msg).'}' );
                $this->sendMail($msg."<br> 详细参数: ".json_encode($queue));

            }

        }

    }while(0);

    $this->getLogService()->info('QueueJobExecute', 'QueueJobDo', '队列任务执行结束' );
    echo 'done'; exit();

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锅巴胸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值