aurimasniekis / scheduler-bundle
简单的 Symfony 任务调度 Bundle
1.0.0
2020-03-22 06:14 UTC
Requires
- php: ^7.4||^8.0
- dragonmantank/cron-expression: ^2.3
- psr/log: ^1.1
- symfony/console: ~4.0||~5.0
- symfony/framework-bundle: ~4.0||~5.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-22 16:26:46 UTC
README
为 Symfony 提供简单调度 Bundle,允许在不修改 cron tab 的前提下,以特定 cron 表达式执行代码。
安装
通过 Composer
$ composer require aurimasniekis/scheduler-bundle
向 bundle.php
添加一行代码
<?php return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], // ... AurimasNiekis\SchedulerBundle\AurimasNiekisSchedulerBundle::class => ['all' => true], ];
将调度器添加到 cron tab 中,使其每分钟运行一次
* * * * * /path/to/symfony/install/bin/console scheduler:run 1>> /dev/null 2>&1
使用方法
Scheduler Bundle 使用 Symfony 容器 autoconfigure
功能,自动将实现 ScheduledJobInterface
或 NamedScheduledJobInterface
接口的所有服务注册到调度器中。
创建计划任务有两种选择:简单计划任务或命名计划任务。前者使用类名作为任务名称,后者提供定义任务名称的方法。
<?php use AurimasNiekis\SchedulerBundle\ScheduledJobInterface; class NamelessJob implements ScheduledJobInterface { public function __invoke(): void { // Execute some logic } public function getSchedulerExpresion(): string { return '*/5 * * * *'; // Run every 5 minutes } }
<?php use AurimasNiekis\SchedulerBundle\NamedScheduledJobInterface; class NamedJob implements NamedScheduledJobInterface { public function __invoke(): void { // Execute some logic } public function getName(): string { return 'named_job'; } public function getSchedulerExpresion(): string { return '*/5 * * * *'; // Run every 5 minutes } }
控制台命令
scheduler:list
列出所有注册的计划任务及其下一次计划运行时间
$ bin/console scheduler:list +------------------------------+-------------+---------- Scheduled Jobs -------------------------------------------------------+ | Name | Expression | Next Scheduled Run Times | +------------------------------+-------------+---------------------------------------------------------------------------------+ | named_job | */5 * * * * | 2020-03-22T04:55:00+00:00, 2020-03-22T05:00:00+00:00, 2020-03-22T05:05:00+00:00 | | App\ScheduledJob\NamelessJob | */5 * * * * | 2020-03-22T04:55:00+00:00, 2020-03-22T05:00:00+00:00, 2020-03-22T05:05:00+00:00 | +------------------------------+-------------+---------------------------------------------------------------------------------+
scheduler:execute
手动执行计划任务
$ bin/console scheduler:execute named_job
Executing Scheduled Job: "named_job"
scheduler:run
命令用于在此刻运行所有计划任务。(用于 cron 作业定义)
* * * * * /path/to/symfony/install/bin/console scheduler:run 1>> /dev/null 2>&1
测试
运行测试用例
$ composer test
运行带覆盖率的测试用例(HTML 格式)
$ composer test-coverage
运行 PHP 风格检查器
$ composer cs-check
运行 PHP 风格修复器
$ composer cs-fix
贡献
请参阅 CONTRIBUTING 和 CONDUCT 以获取详细信息。
许可证
请参阅 许可证文件 以获取更多信息。