aequasi/cron-bundle

此包提供了基于 colourstream/cron-bundle 的 Symfony2 命令的定时执行

安装: 80

依赖者: 0

建议者: 0

安全: 0

星星: 3

观察者: 2

分支: 2

开放问题: 0

类型:symfony-bundle

1.0.1 2014-11-23 07:28 UTC

This package is auto-updated.

Last update: 2024-09-05 18:18:12 UTC


README

此包提供了在您的应用程序中注册重复定时任务的一个简单接口。

此包仅在 Symfony 2.3 上进行测试,但应该可以在 2.3 及以后的版本上工作,至少到 3.0。

安装

  1. 将包添加到您的项目作为 composer 依赖
$ composer require aequasi/cron-bundle "~1.0.0"
  1. 将包添加到 AppKernel
// AppKernel.php
public function registerBundles()
{
	// ...
	$bundles = array(
		// ...
        new Aequasi\Bundle\CronBundle\AequasiCronBundle(),
	);
    // ...

    return $bundles;
}
  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
{
    // ...
}

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

如果您添加了新的命令,您必须运行扫描函数才能使其被选中,或者清除 symfony 缓存。