会员到期提醒这种定时任务得思考
今天在美团下订单,没有付款,美团提醒五分钟内不付款就会取消该订单,鉴于程序员的思想,突然想知道这种类似的行为是怎么实现的,于是就想实现一个类似的功能,思考方案如下:
- 当下单时后台创建一个定时任务,在五分钟后如未付款,执行定时任务
- 数据库里面存储相关信息,固定时间段检索该表,验证订单相应的状态
- 有个不中断的进程一直重复进行检索任务
仔细想了想,感觉自己想的这些方案简直很扯,由于自己没有接触过类似的业务,想知道做过类似服务的大牛对于这个业务是怎么思考,实现的。不吝赐教哈!:laughing:
@Summer 大大看过来啦。
Queue
用延时队列会好点吧
有想法
使用队列,下单的时候把订单号丢到队列里面去,设置5分钟之后执行,5分钟之后再去查询订单的状态,然后做相应的操作。
找一个支持延迟执行的队列。
@forecho @klom303 我去试试,谢谢:laughing:
做过类似。目前实现是用nodejs实现。前段时间研究了一下
Swoole
来安利一下国人开发且被PHP官方收录的PHP扩展
Swoole
. 其中有个一次性使用的定时器在指定的时间后执行函数,需要swoole-1.7.7以上版本。
swoole_server::after
函数是一个一次性定时器,执行完成后就会销毁。http://wiki.swoole.com/wiki/page/320.html
@Frewen 好的,谢谢推荐,正在看swoole文档。:laughing:
@maxiaoxiong 不过这个定时器有个bug,它在2.0beta中才修复 :joy: