tp5.0 queue 队列操作

检查是否安装redis(没有请自行百度安装)

phpinfo:
在这里插入图片描述
配置 thinkphp-queue,没有请执行 composer require topthink/think-queue 加入:
在这里插入图片描述
创建 队列 文件:

use think\Queue;

class TestQueue
{
    // 测试
    public function queue()
    {
        // 推迟 n 秒执行  $queue = '指定队列名'
        Queue::later('2', 'app\message\job\Work','aa@qq.com','');
        // 执行 Work 的 send 方法
        //Queue::push('app\message\job\Work@send','aa@qq.com');
        // 默认执行 Work 的 fire 方法
        //Queue::push('app\message\job\Work','aa@qq.com');

        echo '加入队列成功';
    }
}

队列逻辑处理 文件:

namespace app\message\job;

use think\queue\Job;

class Work
{
    // 默认执行的方法
    public function fire(Job $job, $data)
    {
        $isJobDone = $this->send($data);
        if ($isJobDone) {
            //成功删除任务
            $job->delete();
        } else {
            //任务轮询4次后删除
            if ($job->attempts() > 3) {
                // 第1种处理方式:重新发布任务,该任务延迟10秒后再执行
                //$job->release(10);
                // 第2种处理方式:原任务的基础上1分钟执行一次并增加尝试次数
                //$job->failed();
                // 第3种处理方式:删除任务
                $job->delete();
            }
        }
    }

    /**
     * 根据消息中的数据进行实际的业务处理
     * @param array|mixed    $data     发布任务时自定义的数据
     * @return boolean                 任务执行的结果
     */
    private function send($data)
    {
        // 开始执行队列的逻辑
        echo 'int ....';
        echo PHP_EOL;
        echo 'data: ' .$data;
        echo PHP_EOL;

        // ...
        return true;
    }
}

浏览器访问:

http://127.0.0.1/message/testqueue  (路由自行配置)

后台监听:

php think queue:listen
php think queue:listen --queue 'queuename'   // 监听指定队列

在这里插入图片描述

参考文档:https://github.com/coolseven/notes/blob/master/thinkphp-queue/README.md
守护进程:https://blog.csdn.net/qq_34856247/article/details/86741533
swoole 队列参考:http://www.voidcn.com/article/p-haxrdkng-bop.html
分享一些学习资料:一些学习资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值