很多站长朋友们都不太清楚php实现延迟队列,今天小编就来给大家整理php实现延迟队列,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php使用redis的有序集合zset实现延迟队列 2、 php如何实现执行一段代码后延迟几秒再执行后面代码 3、 TP6队列think-queue(延时队列/自动取消订单/php自动操作) 4、 php消息队列哪个好 php使用redis的有序集合zset实现延迟队列延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息。
我们通过redis的有序集合zset来实现简单的延迟队列,将消息数据序列化,作为zset的value,把消息处理时间作为score,每次通过zRangeByScore获取一条消息进行处理。
然后,我们写一个php脚本,用来处理队列中的任务。
php如何实现执行一段代码后延迟几秒再执行后面代码进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:cd curl
执行phpize生成编译文件,phpize在PHP安装目录的bin目录下
/usr/local/php5/bin/phpize
运行时,可能会报错:Cannot find autoconf. Please check your autoconf installation and
the $PHP_AUTOCONF
environment variable is set correctly and then rerun this
script.,需要安装autoconf:
yum install autoconf(RedHat或者CentOS)、apt-get install
autoconf(Ubuntu Linux)
/usr/local/php5/bin/php -v
执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,
这里会报错,可以根据错误信息去排查!
TP6队列think-queue(延时队列/自动取消订单/php自动操作)什么是延时队列?顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费。
延时队列在项目中的应用还是比较多的,尤其像电商类平台订单成功后,在30分钟内没有支付,自动取消订单
外卖平台发送订餐通知,下单成功后60s给用户推送短信。
如果订单一直处于某一个未完结状态时,及时处理关单,并退还库存
淘宝新建商户一个月内还没上传商品信息,将冻结商铺等
……
上边的这些场景都可以应用延时队列解决。
1.安装think-queue
2.安装redis
3.配置,项目\config\queue.php
4.创建队列和推送
新增 \app\job\test.php 控制器,在该控制器中添加 fire 方法
fire方法是消息队列默认调用的方法
5.在项目中进行调用延时队列方法
6.添加监听 - 重要必要有这个监听,Queue::later才有效
php消息队列哪个好Beanstalkd。php消息队Beanstalkd好,列轻量级消息中间件,原生支持延迟消息队列,延迟时间精确到秒,是PHP实现延迟消息队列的最佳CP。
关于php实现延迟队列的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php实现延迟队列 php延迟跳转的详细内容...