aequasi / cron-bundle
此包提供了基于 colourstream/cron-bundle 的 Symfony2 命令的定时执行
1.0.1
2014-11-23 07:28 UTC
Requires
- php: >=5.4
- doctrine/doctrine-bundle: ~1.2
- symfony/symfony: ~2.3
This package is auto-updated.
Last update: 2024-09-05 18:18:12 UTC
README
此包提供了在您的应用程序中注册重复定时任务的一个简单接口。
此包仅在 Symfony 2.3 上进行测试,但应该可以在 2.3 及以后的版本上工作,至少到 3.0。
安装
- 将包添加到您的项目作为 composer 依赖
$ composer require aequasi/cron-bundle "~1.0.0"
- 将包添加到 AppKernel
// AppKernel.php public function registerBundles() { // ... $bundles = array( // ... new Aequasi\Bundle\CronBundle\AequasiCronBundle(), ); // ... return $bundles; }
- 开始使用此包
$ 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
时运行