delormejonathan/cron-bundle

此扩展包提供对Symfony2命令的定时执行

安装数量: 3,326

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 30

类型:symfony-bundle

dev-master 2020-12-14 09:44 UTC

This package is auto-updated.

Last update: 2024-09-14 17:53:43 UTC


README

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

此扩展包仅在Symfony 2.1上进行了测试。它可能也与Symfony 2.0兼容,但效果可能不同

安装

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

  1. 将扩展包添加到您的项目中作为composer依赖项
// composer.json
{
    // ...
    require: {
        // ...
        "colourstream/cron-bundle": "dev-master"
    }
}
  1. 更新您的composer安装
composer update
  1. 将扩展包添加到您的应用程序内核
// application/ApplicationKernel.php
public function registerBundles()
{
	// ...
	$bundle = array(
		// ...
        new ColourStream\Bundle\CronBundle\ColourStreamCronBundle(),
	);
    // ...

    return $bundles;
}
  1. 更新您的数据库模式
app/console doctrine:schema:update
  1. 开始使用此扩展包
app/console cron:scan
app/console cron:run

自动运行cron作业

此扩展包的设计理念是您的任务将以最小的间隔运行 - 任务将不会比您计划得更频繁地运行,但它们只能在您触发它们时运行(通过运行app/console cron:run或即将推出的Web端点,用于Webcron服务)。

为了便于实现,您可以在系统上创建一个cron作业,如下所示

*/5 * * * * /path/to/symfony/install/app/console cron:run

这将安排您的任务最多每5分钟运行一次 - 例如,计划每3分钟运行的任务将只每5分钟运行一次。

创建自己的任务

使用CronBundle创建自己的任务非常简单 - 您只需创建一个普通的Symfony2命令(或ContainerAwareCommand)并用@CronJob注释标记,如下所示

/**
 * @CronJob("PT1H")
 */
class DemoCommand extends Command
{
    public function configure()
    {
		// Must have a name configured
		// ...
    }
    
    public function execute(InputInterface $input, OutputInterface $output)
    {
		// Your code here
    }
}

间隔规范(如上述示例中的“PT1H”)在DateInterval文档页面上有文档记录,并且可以随时修改。为了使CronJob被扫描并包含在未来的运行中,您必须首先运行app/console cron:scan - 它将在您下次运行app/console cron:run时安排运行。