m-adamski / symfony-schedule-bundle
Symfony 的调度工具包
4.0.0
2024-02-02 10:04 UTC
Requires
- php: >=8.2
- dragonmantank/cron-expression: ^3.3
- symfony/console: ^7.0
- symfony/framework-bundle: ^7.0
- symfony/lock: ^7.0
README
用于简化操作 CRON 任务的工具包。
2.x 版本不再与 Symfony 4.x 兼容。在这种情况下,请使用 1.x 版本。
安装
该工具包可以通过 Composer 安装。
$ composer require m-adamski/symfony-schedule-bundle
如何使用?
该工具包提供了通过配置文件管理 CRON 作业的功能。我们需要创建一个实现 Adamski\Symfony\ScheduleBundle\Model\ManagerInterface
接口的自定义类。
namespace App\Model;
use Adamski\Symfony\ScheduleBundle\Model\ManagerInterface;
use Adamski\Symfony\ScheduleBundle\Model\Schedule;
class ScheduleManager implements ManagerInterface {
public function schedule(Schedule $schedule) {
// TODO: ..
}
}
然后我们需要完成配置 - 创建文件 config/packages/schedule.yaml
并设置到 ScheduleManager 的路径
schedule:
manager: App\Model\ScheduleManager
命令调度配置
在 schedule
函数中,我们可以通过所需的表达式配置 CRON 作业。例如,我们希望每天 12:00 运行 app:test-command
。
public function schedule(Schedule $schedule) {
$schedule->command("app:test-command")->dailyAt("12:00");
}
Schedule 类提供了许多日期时间操作器。此功能灵感来自 Laravel 任务调度。
调度频率选项
您可以为任务分配许多调度。
CRON
现在只需在服务器 crontab 中插入一条条目即可。
* * * * * php /path-to-project/bin/console schedule:run >> schedule.log 2>&1
许可
MIT