一个简单的队列实现

控制器代码

<?php

namespace app\index\controller;

use think\facade\Queue;

class Job extends \app\BaseController
{
    /**
     * @定时任务
     *
     * @return void
     */
    public function test(){
        //参数
        $params = ['id'=>10086];
        $isPushed = Queue::later(3, \app\index\job\Order::class, $params, "order");
        if($isPushed !== false){
            echo date('Y-m-d H:i:s') . " 队列添加成功";
        }else{
            echo '队列添加失败';
        }
    }
}

队列代码

<?php


namespace app\index\job;


use think\facade\Db;
use think\queue\Job;

class Order
{

    /**
     * 在宝塔里的  Supervisord管理器==添加手护进程
     * 名称就是 队列名称,启动命令是:php think queue:listen --queue +队列名
     * 启动用户:root
     * @队列执行
     * @param Job $job
     * @param [type] $param
     *
     * @return void
     */
    public function fire(Job $job, $param)
    {
        try {
            //参数
            $data = $param;
            /*操作开始 */
            $res = $this->handleOrder($data['id']);
            if (!$res){
               if ($job->attempts() > 2) {
                   record_log("任务已经重试2次,删除任务","job");
                   $job->delete();
                   return ;
               }
            }
            record_log("执行成功:".$res,"job_ok");
            //删除任务
            $job->delete();
        }catch (\Exception $exception){
            $job->delete();
            record_log($exception->getMessage(),"exception");
        }
    }

    /**
     * @处理数据
     * @param [type] $id
     *
     * @return void
     */
    public function handleOrder($id)
    {
        return true;
        //对订单进行数据库操作或其他等等
        //Db::name("order")->where("id",$data['id'])->save();
    }

    /**
     * @执行失败
     * @param [type] $data
     *
     * @return void
     */
    public function failed($data){
        // 记录日志
        record_log($data,'job_error');
    }

}

这只是一个思想, 很简单的代码实现;项目中具体可能需要考虑的比较多;



欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

公众号

Don’t reinvent the wheel, library code is there to help.

文章来源:刘俊涛的博客


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)

posted @ 2023-12-01 14:33  刘俊涛的博客  阅读(3)  评论(0编辑  收藏  举报