elektro-potkan/scheduler-di

Nette DI集成调度器

v1.0.0 2021-10-07 11:17 UTC

This package is auto-updated.

Last update: 2024-09-07 15:38:24 UTC


README

contributte/scheduler的深度修改分支的一部分。

简化了使用Nette DI容器的项目中的调度器设置。

用法

示例

extensions:
	scheduler: ElektroPotkan\Scheduler\DI\SchedulerExtension

services:
	stats: App\Model\Stats
	scheduledJob: App\Model\ScheduledJob
	- App\Model\OtherScheduledJob

scheduler:
	path: '%tempDir%/scheduler'
	jobs:
		# stats must be registered as a service and have method calculate
		- {cron: '* * * * *', callback: [@stats, calculate]}
		
		# calling static method of a class
		- {cron: '*/2 * * * *', callback: App\Model\Monitor::echo}
		
		# referencing jobs already registered as services
		- @scheduledJob
		- @App\Model\OtherScheduledJob
		
		# classes can be used directly - they will be registered into DI container automatically
		- App\MyOtherJobRegisteredIntoDIByScheduler

设置

首先需要注册DI扩展

extensions:
	scheduler: ElektroPotkan\Scheduler\DI\SchedulerExtension

要使用比Simple更高级的调度器,您需要提供存储它们的锁和时间的目录的path

scheduler:
	path: '%tempDir%/scheduler'

如果您只设置了上面的path,将使用LastCheck调度器。

您可以通过可选的lastX选项来控制确切使用的调度器

scheduler:
	lastX: no    # uses Locking scheduler
	lastX: check # uses LastCheck scheduler (the default one if the lastX option is missing)
	lastX: run   # uses LastRun scheduler

回调作业

scheduler.jobs键下注册您的回调。

services:
	stats: App\Model\Stats

scheduler:
	jobs:
		# stats must be registered as a service and have method calculate
		- { cron: '* * * * *', callback: [ @stats, calculate ] }
		
		# Monitor is class with static method echo
		- { cron: '*/2 * * * *', callback: App\Model\Monitor::echo }

注意cron语法,请参考以下示例。您还可以使用crontab.guru验证您的cron。

  *  *  *  *  *
  -  -  -  -  -
  |  |  |  |  |
  |  |  |  |  |
  |  |  |  |  +----- day of week (0 - 7) (Sunday=0 or 7)
  |  |  |  +---------- month (1 - 12)
  |  |  +--------------- day of month (1 - 31)
  |  +-------------------- hour (0 - 23)
  +------------------------- min (0 - 59)

自定义作业

适用于实现ElektroPotkan\Scheduler\IJob接口的类。

直接将您的类注册到配置中作为作业。

scheduler:
	jobs:
		- App\Model\ScheduledJob
		- App\Model\OtherScheduledJob

您也可以引用已注册的服务。

services:
	scheduledJob: App\Model\ScheduledJob
	- App\Model\OtherScheduledJob

scheduler:
	jobs:
		- @scheduledJob
		- @App\Model\OtherScheduledJob

作者

信息

版本控制

本项目使用语义版本控制2.0.0 (semver.org)

分支

本项目使用略有修改的Git-Flow工作流程和分支模型

许可证

您可以在MIT许可证的条款下使用此程序。

见文件LICENSE