colourstream/cron-bundle

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

安装次数: 1,057

依赖: 0

建议者: 0

安全性: 0

星标: 50

关注者: 11

分支: 30

开放问题: 8

类型:symfony-bundle

dev-master 2012-10-10 09:45 UTC

This package is not auto-updated.

Last update: 2024-09-28 13:45:58 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 或即将推出的网络端点,用于与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时安排运行。