Thinkphp使用消息队列Queue
Thinkphp使用消息队列Queue。我的ThinkPHP版本是5.0
使用composer安装queue包,命令行进入到项目的根目录,输入:
composer require topthink/think-queue
安装完在项目生成了application/extra/queue.php文件,这个是配置消息队列,这里使用redis作为驱动,配置修改为下面内容:
<?phpreturn ['connector' => 'Redis','expire' => 180, // 任务过期时间,若要禁止则设置为null'default' => 'default', // 默认队列名称'host' => '127.0.0.1','port' => '6379','password' => '','select' => 6, // redis db'timeout' => 0, // redis连接超时时间'persistent' => false, // 是否是长连接
];
创建任务。
在application/index/controller下,创建MyQueue.php控制器,代码如下:
<?php
namespace app\index\controller;use think\Queue;class MyQueue {public function index() {// 任务类 - 执行时调用该类的deal方法$job_class = "app\index\job\Message@deal";// 队列名称$job_queue_name = 'Check';// 数据$job_data = array('timestamp' => time());// 把任务加入到消息队列,等待被执行// 延迟发送任务 5秒$is_push = Queue::later(5, $job_class, $job_data, $job_queue_name);// 立即发送任务// $is_push = Queue::push($job_class, $job_data, $job_queue_name);if($is_push !== false ){echo date('Y-m-d H:i:s') . " a new Hello Job is Pushed to the MQ"."<br>";}else{echo 'Oops, something went wrong.';}}}
实现任务的具体内容,在application/index/job/创建Message.php,代码如下:
<?php
namespace app\index\job;use think\queue\Job;class Message {/* 处理逻辑 */public function deal(Job $job, $data) {// 这里实现逻辑// 任务执行成功 删除任务$job->delete();}}
测试:
浏览器打开http://xxxx/index/MyQueue/index,添加任务完成
命令行进入到项目根目录,输入下面命令执行任务:
php think queue:work --queue Check
监听模式的启动方式可以实现定时器的效果,启动命令:
php think queue:listen --queue Check
listen的方式就是一直在监听,如果有动态加入的任务,会一直执行下去。
listen方式的后台启动命令:
php think queue:listen --queue CheckMessageStatus 1>/dev/null 2>&1 &
参考文档:https://github.com/coolseven/notes/blob/master/thinkphp-queue/README.md
Thinkphp使用消息队列Queue相关推荐
- python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)
今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...
- LiteOS内核源码分析:消息队列Queue
本文分享自华为云社区<LiteOS内核源码分析系列十 消息队列Queue>,原文作者:zhushy . 队列(Queue)是一种常用于任务间通信的数据结构.任务能够从队列里面读取消息,当队 ...
- 消息队列Queue大全
消息队列Queue大全 (http://queues.io/) 作业队列,消息队列和其他队列.几乎所有你能想到的都在这. 关于 那里有很多排队系统.他们每个人都不同,是为解决某些问题而创建的.这个页面 ...
- python笔记 7-8 进程池 进程通信 迭代器 消息队列 Queue 协程 和正则表达式
day7 进程 进程池 进程通信 迭代器 消息队列 Queue 作用 用于多个进程间的通信 操作put放入消息(值) put_nowait() 放入值,不等待 如果队满,则报错 get获取消息(值) ...
- python多进程之间的通信:消息队列Queue
python中进程的通信:消息队列. 我们知道进程是互相独立的,各自运行在自己独立的内存空间. 所以进程之间不共享任何变量. 我们要想进程之间互相通信,传送一些东西怎么办? 需要用到消息队列!! 进程 ...
- Threadx 消息队列 queue
文章目录 消息传递规则 消息大小 消息队列控制块 消息队列list 消息队列API 创建消息队列_tx_queue_create 删除队列_tx_queue_delete 清空消息队列_tx_queu ...
- python消息队列模块_day43-python消息队列二-queue模块
Python提供了Queue模块来专门实现消息队列Queue对象 Queue对象实现一个fifo队列(其他的还有lifo.priority队列,这里不再介绍).queue只有maxsize一个构造参数 ...
- 队列Queue:任务间的消息读写,安排起来~
摘要:本文通过分析鸿蒙轻内核队列模块的源码,掌握队列使用上的差异. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列十三 消息队列Queue>,作者:zhushy . 队列(Queue)是 ...
- 深入浅出 消息队列 ActiveMQ(转)
一. 概述与介绍 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provide ...
- Spring Boot:使用Rabbit MQ消息队列
综合概述 消息队列 消息队列就是一个消息的链表,可以把消息看作一个记录,具有特定的格式以及特定的优先级.对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息,对消息队列有读权限的进程则可以 ...
最新文章
- Android为TV端助力 同时setTag两次,保存多种值
- 纹理过滤模式中的Bilinear、Trilinear以及Anistropic Filtering
- 改成中文版的_lol手游怎么改成中文版?英雄联盟手游中文版更改教程
- java调用kafka接口发送数据_Java调用Kafka生产者,消费者Api及相关配置说明
- 浅谈音视频网络通信中的延时优化
- 在Mac上安装Linux的行为是否应该被鄙视?
- SQL 2008镜像配置
- 拓端tecdat|R语言高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
- UpdateData()函数使用
- IKM 线上测试JavaScript
- 最好用的五大服装进销存管理软件,强推第一个
- win7系统 winload.efi 文件损坏 报 0xc0000428 错误 不重装系统解决方法
- Java是什么?Java能干什么工作?
- ADI超声解决方案 和系统成像设计
- WordPress重新安装的几种方法(2022年新版教程)
- U盘显示0字节怎么恢复完整解决教程
- 【语义分割系列:八】Segmentation 数据集 介绍下载论文
- [转]教你修复win7中复制粘贴失效的问题
- Linux C 函数参考(日期时间)
- vivado 时序例外约束
热门文章
- Spring IOC中bean标签和管理对象细节
- 阿里 mysql内核_阿里云数据库内核组讲解MySQL中的两种临时表
- FFmpeg学习(0)——使用ffmpeg视频切片并加密
- C++_Operator Overloading(运算符重载 | 计算有理数的加减乘除)
- karto探秘之文章索引
- 研究自动驾驶技术的算法需要哪些知识?
- 耶鲁华裔硕士被击数枪身亡,嫌犯疑竟是MIT博士生,曾获奥数银牌
- WPF的DataGrid的某个列绑定数据的三种方法(Binding、Converter、DataTrigger)
- 实训day4-python-Selenium请求库
- 单链表以及双向链表的操作