creadev / cron-bundle
此包提供了执行Symfony2命令的定时执行功能
v1.0
2017-06-09 21:53 UTC
Requires
- php: >=5.3.2
- doctrine/doctrine-bundle: *
- symfony/symfony: *
This package is not auto-updated.
Last update: 2024-09-29 01:38:04 UTC
README
此包提供了一种简单的方法来注册应用程序中重复的定时任务,包括对主机不允许命令行访问的安装的支持(待办事项)。
此包仅在Symfony 2.1上进行了测试。它可能与Symfony 2.0兼容,但效果可能不同。
安装
通过以下简单步骤安装此包
- 将包添加到您的项目作为composer依赖项
// composer.json { // ... require: { // ... "colourstream/cron-bundle": "dev-master" } }
- 更新您的composer安装
composer update
- 将包添加到您的应用程序内核
// application/ApplicationKernel.php public function registerBundles() { // ... $bundle = array( // ... new ColourStream\Bundle\CronBundle\ColourStreamCronBundle(), ); // ... return $bundles; }
- 更新您的数据库模式
app/console doctrine:schema:update
- 开始使用此包
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
时安排运行。