elektro-potkan / scheduler-di
Nette DI集成调度器
v1.0.0
2021-10-07 11:17 UTC
Requires
- php: >= 7.2
- contributte/di: ^0.5
- elektro-potkan/scheduler: ^1.0.0
Requires (Dev)
- nette/tester: ^2.3
- phpstan/phpstan: ^0.12
- phpstan/phpstan-deprecation-rules: ^0.12
- phpstan/phpstan-nette: ^0.12
- phpstan/phpstan-strict-rules: ^0.12
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
作者
- 由Elektro-potkan修改分支 git@elektro-potkan.cz。
- 原始Contributte包作者(见Composer配置文件)
信息
版本控制
本项目使用语义版本控制2.0.0 (semver.org)。
分支
本项目使用略有修改的Git-Flow工作流程和分支模型
- https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
- https://nvie.com/posts/a-successful-git-branching-model/
许可证
您可以在MIT许可证的条款下使用此程序。
见文件LICENSE。