jobs:一个帮助你更好地组织任务的PHP库

在你的项目中,可能会遇到使用异步任务的场景,异步任务需要满足以下需求

  • 任务执行时间可自主设定(延时任务)
  • 任务失败可重试,并有最大重试次数限制
  • 任务失败后,下次重试的时间可自主设定,如固定间隔时间,随着失败次数增加逐渐增大间隔时间
  • 对于有依赖关系的任务,需要按顺序执行
  • 有些任务的执行结果依赖外部回调,需要有一个中间状态

php-jobs 是一个不错的实现。

这是一个抽象的库,具体的model和具体的任务内容需要自己实现,其它的都在库里实现好了。

作者对Laravel比较熟悉,推出了Laravel版本:laravel-jobs

概念

任务集

为了处理有依赖关系的任务,或者虽然没有依赖关系,但需要作为一个整体执行的任务,任务被打包成任务集

任务集中的子任务,可以是有依赖关系的,或者可独立执行的,或者两者都有。

有依赖关系的任务,需要按指定的顺序执行,前置的任务执行成功,才会尝试执行后置的任务。

任务

是组成任务集的最小单位,具体的工作在这里实现。

任务集

属性

  • 名称
  • 执行时间:等于最早的子任务的执行时间
  • 包含的子任务(有依赖关系的、无依赖关系的)
  • 状态

状态

  • 初始状态:任务集创建时的状态
  • 执行当中:任务集中至少有一个子任务已经尝试执行了,但有部分子任务未执行完结
  • 成功:所有子任务都已成功执行
  • 失败:至少有一个子任务执行失败了

子任务

属性

  • 名称
  • 执行时间
  • 状态
  • 已重试次数

状态

  • 初始状态:任务创建时的状态
  • 成功:任务成功执行
  • 失败:任务经过多次(最大次数可设定)后,最终仍未成功执行
  • 等待回调
  • 待重试:任务执行失败,但尚未达到最大重试次数

项目还在慢慢完善,期待你的参与。

php-jobs

laravel-jobs

猜你喜欢

转载自blog.csdn.net/u010205879/article/details/79745194