Menu

4.8. 众筹结束逻辑

众筹结束逻辑

在前面的章节我们已经实现了众筹业务的大部分功能,本节我们将要实现众筹的最后一个也是最重要的功能——众筹结束逻辑。

1. 实现方案的考量

在 Laravel 框架下,要触发众筹结束的处理逻辑有两种方案:

  1. 使用异步延迟任务(Delayed Job),在创建众筹商品时就发起一个执行结束逻辑的异步延迟任务;
  2. 使用定时任务,每隔一段时间就扫描所有众筹状态为众筹中且众筹结束时间比当前时间要早的众筹商品。

相较于定时任务,异步延迟任务的优点很明显,就是可以较精确地在众筹结束时间执行众筹结束逻辑。但是也有一个致命的问题,假如运营人员修改了众筹商品的众筹结束时间,而我们却无法通过代码取消掉之前发起的异步延迟任务,这是由 Laravel 异步延迟任务的实现方案决定的,目前没有合适的方案来解决这个问题。因此这个方案我们没有采用。

而定时任务是不会有延迟任务这样的问题,虽然无法做到像延迟任务那样精确,但只要设定一个较为合理的任务间隔,比如每分钟一次,就可以把结束时间的误差控制在 1 分钟以内,对于大多数众筹项目来说 1 分钟的误差几乎没有影响。因此我们选择定时任务作为我们...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 5

joylee109
关于众筹结束状态的思考
1 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
__中国人
老师,map 和 each 的疑惑
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
AmberLavigne
定时任务里面用到了预加载的 product?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
Damian
new OrderService 和 App (OrderService::class) 两种写法有什么区别?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
刻意练习,每日精进。
1
点赞
1156
浏览
5
讨论

作者
leo