下面由thinkphp框架教程栏目给大家介绍使用ThinkPHP5中thinkphp-queue的方法,希望对需要的朋友有所帮助!
最近小编收到群里面的小伙伴在使用ThinkPHP5.0的框架时,不知道如何使用php-queue(实在尴尬,网上很多这方面的教程)。哈哈,不想参考也没关系,小编就具体地走一遍吧~~关于什么是队列?队列的解决什么?队列有哪些场景?...等等这些问题,开发者请自行先去了解,还有本案例只针对ThinkPHP框架进行具体操作哦。
1、安装 thinkphp-queue
推荐使用Composer进行安装,切换到项目的根目录,执行: composer require topthink/think-queue
2、配置消息队列的存储环境
配置文件位于 application\extra\queue.php,如图:
使用Redis驱动,如果Redis环境还没有安装,请自行安装哦,很简单的,或者也可以使用其他类型驱动,如图:
3、任务的创建
我们在index模块下,Index.php文件,建立一个名为 queue 的方法(一定要这样么?当然不是,本教程,只是例子,你可以新建模块,方法名也可以是其他),如图:
4、任务消息的消费以及删除处理
我们在 index模块下创建一个 job 文件,该文件用来处理消费模式,如图:
在 Demo 这个类下,创建一个 fire 方法,该方法是消息队列默认调用的方法。如图:
以上就是完成任务的创建--》推送--》消费了。
在浏览器或者终端,执行一下我们 index/queue.html 方法,就完成创建以及推送了,关于任务消费,可以参考一下命令,在终端切换到项目的根目录:
5、监听任务并执行
php think queue:listen php think queue:work –daemon(不加–daemon为执行单个任务)
两种,具体的可选参数可以输入命令加 –help 查看
可配合supervisor使用,保证进程常驻
1.1 命令模式
queue:subscribe 命令 [截至2017-02-15,作者暂未实现该模式,略过]
-
queue:work 命令
work 命令: 该命令将启动一个 work 进程来处理消息队列。
php think queue:work --queue helloJobQueue
-
queue:listen 命令
listen 命令: 该命令将会创建一个 listen 父进程 ,然后由父进程通过
proc_open(‘php think queue:work’)
的方式来创建一个work 子 进程来处理消息队列,且限制该work进程的执行时间。php think queue:listen --queue helloJobQueue
2.2 命令行参数
-
Work 模式
php think queue:work \ --daemon //是否循环执行,如果不加该参数,则该命令处理完下一个消息就退出 --queue helloJobQueue //要处理的队列的名称 --delay 0 \ //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0 --force \ //系统处于维护状态时是否仍然处理任务,并未找到相关说明 --memory 128 \ //该进程允许使用的内存上限,以 M 为单位 --sleep 3 \ //如果队列中无任务,则sleep多少秒后重新检查(work+daemon模式)或者退出(listen或非daemon模式) --tries 2 //如果任务已经超过尝试次数上限,则触发‘任务尝试次数超限’事件,默认为0
-
Listen 模式
php think queue:listen \ --queue helloJobQueue \ //监听的队列的名称 --delay 0 \ //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0 --memory 128 \ //该进程允许使用的内存上限,以 M 为单位 --sleep 3 \ //如果队列中无任务,则多长时间后重新检查,daemon模式下有效 --tries 0 \ //如果任务已经超过重发次数上限,则进入失败处理逻辑,默认为0 --timeout 60 //创建的work子进程的允许执行的最长时间,以秒为单位
可以看到 listen 模式下,不包含
--deamon
参数,原因下面会说明
Linux启动守护进程,以tp5为例子
nohup php think queue:work --daemon --queue 任务名称 & nohup php think queue:work --daemon --queue 任务名称 &
在Linux查看任务数量,可以在终端输入:jobs -l
以上是你会使用ThinkPHP5中thinkphp-queue吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了ThinkPHP的内置测试框架,突出了其关键功能(例如单元和集成测试),以及它如何通过早期的错误检测和改进的代码质量来增强应用程序可靠性。

本文讨论了在无服务器体系结构中使用ThinkPHP的关键注意事项,专注于性能优化,无状态设计和安全性。它突出了诸如成本效率和可扩展性之类的收益,但也应对挑战

本文讨论了在ThinkPHP微服务中实施服务发现和负载平衡,重点是设置,最佳实践,集成方法和推荐工具。[159个字符]

ThinkPHP的IOC容器提供了高级功能,例如懒惰加载,上下文绑定和方法注入PHP App中有效依赖性管理的方法。Character计数:159

ThinkPHP具有轻巧的设计,MVC架构和可扩展性。它通过各种功能提高可扩展性,加快开发并提高安全性。

本文概述了使用ThinkPhp和RabbitMQ构建分布式任务队列系统,重点是安装,配置,任务管理和可扩展性。关键问题包括确保高可用性,避免常见的陷阱,例如不当


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver CS6
视觉化网页开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),