fgits / cron-bundle
此扩展包提供执行 Symfony 命令的定时功能
5.0
2023-08-27 14:00 UTC
Requires
- php: >=8.2
- doctrine/doctrine-bundle: *
- doctrine/orm: *
- symfony/console: ^6.3
- symfony/dependency-injection: ^6.3
- symfony/event-dispatcher: ^6.3
Requires (Dev)
README
此扩展包提供了一个简单接口,用于在您的应用程序中注册重复的定时任务,包括对主机不允许命令行访问的安装的支持(待办事项)。
此扩展包只在 Symfony 6.3 上进行了测试。它可能适用于 Symfony 6.4
安装
可以通过以下简单步骤安装此扩展包
将扩展包添加到您的项目作为 composer 依赖项
compoer require fgits/cron-bundle
将扩展包添加到您的应用程序内核
// config/bundles.php return [ // ... Fgits\Bundle\CronBundle\FgitsCronBundle::class => ['all' => true], // ... ];
更新您的数据库模式
bin/console doctrine:schema:update
开始使用此扩展包
bin/console cron:scan bin/console cron:run
自动运行 cron 任务
此扩展包的设计理念是您的任务将以最小的时间间隔运行 - 任务将不会比您计划得更频繁地运行,但只有在您触发它们时才能运行(通过运行 app/console cron:run
或即将推出的网络端点,用于与 webcron 服务一起使用)。
为此,您可以在系统上创建一个 cron 任务,如下所示
*/5 * * * * /path/to/symfony/install/app/console cron:run
这将安排您的任务每最多 5 分钟运行一次 - 例如,计划每 3 分钟运行的任务将每 5 分钟运行一次。
创建自己的任务
使用 CronBundle 创建自己的任务非常简单 - 您只需创建一个普通的 Symfony 命令并将其标记为 CronJob 属性,如下所示
#CronJob("PT1H")
class DemoCommand extends Command
{
public function configure()
{
// Must have a name configured
// ...
}
public function execute(InputInterface $input, OutputInterface $output): int
{
// Your code here
}
}
间隔规范(如上例中的 "PT1H")在 DateInterval 文档页面上有记录,并且可以在您选择的任何时候修改。为了使您的 CronJob 被扫描并包含在未来的运行中,您必须首先运行 app/console cron:scan
- 它将在您下次运行 app/console cron:run
时安排运行。