为了账号安全,请及时绑定邮箱和手机立即绑定

php是怎么监控Activemq队列的?

php是怎么监控Activemq队列的?

Cats萌萌 2019-04-27 22:14:35
有点雾水,有点懵b,php这种东西怎么能实时监控Activemq消息队列的。php不是在网页中执行的嘛?怎么能一直待在那接收消息啥的。我想了想,是不是这样的?cmd弹出个dos窗口,然后php用命令行模式执行,搞个死循环,就一直在那轮询,看队列有没有消息,有就执行处理。是不是这样的。如果整个是这样,整个逻辑是不是这样的?有个场景,用户购买产品,48小时,不确认,就自动默认好评。或者滴滴用户坐车,下车后48小时,不评价司机,默认好评。第一步:1、php接收用户输入的购买产品参数,处理后,写入数据库订单表,形成订单。第二步:2、用户支付->卖家发货。第三步:3、发货的同时,把发货时间距离48小时后的秒数,还有订单id,插入消息队列。这时候,整个web处理流程完成了。然后我在,cmd窗口,执行一个php订单超时文件,这个文件,就在那一直循环啊,循环啊,轮询看消息队列。例如,5秒,看一次,有没有倒计时是0的过期订单,有就拿出来,把订单状态更改为已确认。到这整个流程就完事了。是不是这个样子。暂时就这样理解的,对不对呢?如果是这样的,那么好处就是,不用扫表了,改成了扫内存。因为内存快,所以比直接扫表要效率高。或者,监控程序,用java做一个,也是像php那种循环轮询。或者干脆做一个winform窗口文件,做同样的事情监控、执行任务。这么理解对不对?
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

为什么要那么高的实时性?5s?
那换个思路,每个订单发货后都存进Redis,然后如果买家评论了,那就从Redis中拿掉,如果没有就每次都从队里里面拿,比对时间,处理完了之后就从Redis中拿掉。最好是能根据时间段进行分段存储,更高效率的执行。
其次类似与这种需求,完全没必要做到实时,使用任务计划在每天凌晨执行一次就行了。
                            
查看完整回答
反对 回复 2019-04-27
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

个人感觉这个用crontab就可以了,一分钟一次,查询发货时间距离当前时间已经超过48小时并且没有被评价的订单,然后去做你要的默认评价操作就行。
                            
查看完整回答
反对 回复 2019-04-27
  • 2 回答
  • 0 关注
  • 311 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信