fgits/cron-bundle

此扩展包提供执行 Symfony 命令的定时功能

安装次数: 2,393

依赖项: 0

建议者: 0

安全: 0

类型:symfony-bundle

5.0 2023-08-27 14:00 UTC

This package is not auto-updated.

Last update: 2024-09-22 18:51:04 UTC


README

此扩展包提供了一个简单接口,用于在您的应用程序中注册重复的定时任务,包括对主机不允许命令行访问的安装的支持(待办事项)。

此扩展包只在 Symfony 6.3 上进行了测试。它可能适用于 Symfony 6.4

安装

可以通过以下简单步骤安装此扩展包

  1. 将扩展包添加到您的项目作为 composer 依赖项

    compoer require fgits/cron-bundle
    
  2. 将扩展包添加到您的应用程序内核

    // config/bundles.php
    return [
     // ...
     Fgits\Bundle\CronBundle\FgitsCronBundle::class => ['all' => true],
     // ...
    ];
    
  3. 更新您的数据库模式

    bin/console doctrine:schema:update
    
  4. 开始使用此扩展包

    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 时安排运行。