阅读 36 SEO

TP6基于redis的消息队列实现,从0开始,一步一步,包会教程!

TP6基于redis的消息队列实现,从0开始,一步一步,包会教程!

我是用的PHP框架是thinkphp6,所以使用的相对来说比较匹配的think-queue.尽量把每一步都写出来,经过自己采坑,尽量做到按照步骤下来,基本都能跑通!

官方地址:https://github.com/top-think/think-queue

第一步:安装composer(如果这一步都不会,那么就不用看下去了)

 

第二步:在项目根目录下,安装要用的依赖,执行:composer require topthink/think-queue

 

第三步:本地安装redis服务端。我这里用的是集成工具,自带redis服务,如果没有的话,就去redis的官网:https://redis.io/,下载安装一下,按照教程,启动redis服务,应该也不难的,我试过。

 

第四步:使用phpinfo查看你的PHP是否已经安装redis的扩展,如果没有,那么请注意了,你需要安装redis扩展。具体操作如下:

·使用phpinfo查看你的系统版本以及PHP支持的扩展版本:

 

要注意几个地方 X64,TS,VC,以及你的PHP版本,然后去https://windows.php.net/downloads/pecl/releases/redis/ 这个地址找到对应的redis版本,下载,解压。

·找到php_redis.dll文件,把它放到你的PHP安装目录的ext文件夹下

·编辑php.ini,加入extension=php_redis;这里注意,PHP版本不同有时候写法不一样,也有可能是extension=php_redis.dll,这个你根据php.ini中查看类似写法就好。

·再用phpinfo看一下,发现有redis扩展了,说明装好了。

 

第五步:编写app\queue.php文件,这个文件是自动生成的。

 

 按照这样设置就行,redis的连接根据你自己的实际情况来。

 

第六步:在app下新建文件夹job,然后新建一个php文件,这里就是放怎么去处理消息队列的逻辑,比如新建Job1.php文件

 

 第七步:在任何地方可以将一个数据推入消息队列:think\facade\Queue::push($job, $data = '', $queue = null)

第八步:在命令行执行:php think queue:listen --queue=<队列名>来监听消息队列,一旦队列里面有数据,就会启动消费进程去消费。这里要注意一点,如果你的逻辑处理起来耗时很长,超过了默认的60秒,那么是会报错的。如果你想要不报错,可以这样起命令:php think queue:listen --queue=<队列名> --timeout=600 (任务执行一次之后还是会一直执行的,可以在代码开头加一段这个

1
2
3
4
if ($job->attempts() == 1) {
            //这样任务只会执行一次
            $job->delete();
        }

 第九步:如果你想以守护进程的形式常驻这个队列的监听,那么使用supervisor这个我没试过,试过的小伙伴也可以在评论区补充下怎么使用,大家互相学习!

来源:https://www.cnblogs.com/littlesky123/p/14755251.html

服务器评测 http://www.cncsto.com/ 

服务器测评http://www.cncsto.com/ 


文章分类
后端
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 gxwowoo@163.com 举报,一经查实,本站将立刻删除。
相关推荐