猿问

php是怎么监控Activemq队列的?

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

jeck猫

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

慕桂英546537

个人感觉这个用crontab就可以了,一分钟一次,查询发货时间距离当前时间已经超过48小时并且没有被评价的订单,然后去做你要的默认评价操作就行。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答