会员到期提醒这种定时任务得思考

今天在美团下订单,没有付款,美团提醒五分钟内不付款就会取消该订单,鉴于程序员的思想,突然想知道这种类似的行为是怎么实现的,于是就想实现一个类似的功能,思考方案如下:

  1. 当下单时后台创建一个定时任务,在五分钟后如未付款,执行定时任务
  2. 数据库里面存储相关信息,固定时间段检索该表,验证订单相应的状态
  3. 有个不中断的进程一直重复进行检索任务

仔细想了想,感觉自己想的这些方案简直很扯,由于自己没有接触过类似的业务,想知道做过类似服务的大牛对于这个业务是怎么思考,实现的。不吝赐教哈!:laughing:

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 9

用延时队列会好点吧

7年前 评论

使用队列,下单的时候把订单号丢到队列里面去,设置5分钟之后执行,5分钟之后再去查询订单的状态,然后做相应的操作。

找一个支持延迟执行的队列。

7年前 评论

做过类似。目前实现是用nodejs实现。前段时间研究了一下Swoole

来安利一下国人开发且被PHP官方收录的PHP扩展Swoole. 其中有个一次性使用的定时器

在指定的时间后执行函数,需要swoole-1.7.7以上版本。

swoole_server->after(int $after_time_ms, mixed $callback_function);

swoole_server::after函数是一个一次性定时器,执行完成后就会销毁。

http://wiki.swoole.com/wiki/page/320.html

7年前 评论

@Frewen 好的,谢谢推荐,正在看swoole文档。:laughing:

7年前 评论

@maxiaoxiong 不过这个定时器有个bug,它在2.0beta中才修复 :joy:

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!