ttree / scheduler
Neos Flow Framework 简单的任务调度器
3.1.4
2022-10-11 19:55 UTC
Requires
- beberlei/assert: ^2.7
- mtdowling/cron-expression: ^1.2
- neos/flow: ^7.0 || ^8.0
- neos/utility-lock: ^5.3 || ^6.0
README
一个基于cron灵感的,为您的Flow和Neos项目提供的任务调度器。
创建任务对象
您需要实现 Ttree\Scheduler\Task\TaskInterface
接口:
class MyTask implements \Ttree\Scheduler\Task\TaskInterface { /** * @param array * @return void */ public function execute(array $arguments = array()) { // ... } }
动态任务
您可以通过向您的类添加一个 `Ttree\Scheduler\Annotations\Schedule` 注解来安排您自己的任务对象:
use Ttree\Scheduler\Annotations as Scheduler; /** * @Scheduler\Schedule(expression="* * * * *") */ class MyTask implements \Ttree\Scheduler\Task\TaskInterface { // ... }
此任务将每分钟执行一次。动态任务不支持参数,执行方法的 $arguments
总是一个空数组。
如果您的表达式包含斜杠,您必须进行双重转义。例如,每5分钟运行任务:@Scheduler\Schedule(expression="*\\/5 * * * *")
您还可以使用 Meta 注解添加任务的描述:
use Ttree\Scheduler\Annotations as Scheduler; /** * @Scheduler\Meta(description="Describes your task.") */
持久化任务
您还可以创建持久化任务。持久化任务支持执行参数。您可以在任务之间传递不同的参数时注册相同的任务对象。您可以传递一个有效的JSON参数数组
flow task:register --expression "* */3 * * *" --task "Ttree\Aggregator\Task\AggregatorTask" --arguments '{"node": "af97b530-0c70-7b87-3cf4-f9a611f88c18"}'
可用的配置选项
可用的CLI辅助工具
列出所有可用的任务(动态和持久化)
flow task:list
运行所有到期的任务(动态和持久化)
flow task:run
直接运行单个任务
flow task:runSingle --task [identifier]
启用持久化任务
flow task:enable --task [identifier]
禁用持久化任务
flow task:disable --task [identifier]
待办事项
如果您需要特定的功能,请随意提出问题,并最好发送一个拉取请求。以下是一些未来改进的想法
- 一个Neos后端模块,以便对任务有总体了解
- 异步任务处理或多线程(pthread支持)
致谢
此包受到 Famelo.Scheduler - by mneuhaus 的启发。
由 ttree ltd - neos solution provider 赞助开发。
许可证
在GPLv2+许可下发布,请参阅 LICENSE