creadev/cron-bundle

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

安装: 100

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 30

类型:symfony-bundle

v1.0 2017-06-09 21:53 UTC

This package is not auto-updated.

Last update: 2024-09-29 01:38:04 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(interval="PT1H", firstrun="09:00:00")
 */
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时安排运行。