关于周期任务的功能?

需求

有一个计划任务的需求,用户创建任务的时候选择周期任务,需要每隔一定时间执行一次该任务,这个时间间隔用户自定义,比如3天执行一次,3周执行一次这样。

问题

  1. 怎么动态设置这个任务调度计划?
  2. 当用户删除此任务的时候,如何取消这个任务调度?
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
Complicated
最佳答案

把你要执行的“子任务”记录到数据库里,然后记录上 该任务的执行时间规则,,然后起一个 一分钟一次的“父任务”,这个父任务每分钟都去扫一下数据库,看看当前该哪个子任务该执行了,这时候就直接呗(数据库里记录的是任务的类名,这时候要利用反射的机制创建任务实例)

4年前 评论
左手指月 (楼主) 4年前
Complicated (作者) 4年前
左手指月 (楼主) 4年前
讨论数量: 4
Complicated

把你要执行的“子任务”记录到数据库里,然后记录上 该任务的执行时间规则,,然后起一个 一分钟一次的“父任务”,这个父任务每分钟都去扫一下数据库,看看当前该哪个子任务该执行了,这时候就直接呗(数据库里记录的是任务的类名,这时候要利用反射的机制创建任务实例)

4年前 评论
左手指月 (楼主) 4年前
Complicated (作者) 4年前
左手指月 (楼主) 4年前

将任务放在队列中调用,动态设置队列何时执行。 用户删除任务继续执行,执行前查是否由此用户有继续执行,没有直接return

4年前 评论
左手指月 (楼主) 4年前
vinhson (作者) 4年前
左手指月 (楼主) 4年前
Complicated 4年前

一分钟一次比队列靠谱,队列是不可信的,如果要确保任务一定要执行,那么除了队列以外也要用 cron 做最后保险

4年前 评论

@Hanson 谢谢,还是采用第一种了,将要执行的周期任务放到单独一张表里,每分钟去检测下符合条件的取出来执行。

4年前 评论

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