gemorroj/cron-bundle

此包提供执行 Symfony 命令的计划任务

赞助包维护!
Paypal
Liberapay

安装: 63

依赖者: 0

建议者: 0

安全性: 0

星标: 2

关注者: 3

分支: 25

类型:symfony-bundle


README

paypal

PHP Version Latest Stable Version Latest Unstable Version Total Downloads Monthly Downloads Daily Downloads License

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

安装说明

安装此包可以通过以下简单步骤完成

通过 composer 将此包添加到您的项目中

composer require gemorroj/cron-bundle

如果 flex 没有为您完成,请将包添加到您的配置中

<?php

// config/bundles.php
return [
    // ...
    Shapecode\Bundle\CronBundle\ShapecodeCronBundle::class,
    // ...
];

更新您的数据库模式 ...

... 使用 Doctrine 模式更新方法 ...

php bin/console doctrine:schema:update --force

创建自己的任务

使用 CronBundle 创建自己的任务非常简单 - 您只需要创建一个正常的 Symfony2 命令(或 ContainerAwareCommand),并使用 CronJob 注解标记它,如下所示

<?php

declare(strict_types=1);

namespace App\DemoBundle\Command;

use Shapecode\Bundle\CronBundle\Annotation\CronJob;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

/**
 * @CronJob("*\/5 * * * *")
 * Will be executed every 5 minutes
 */
class DemoCommand extends Command
{
    
    public function configure() : void
    {
		// Must have a name configured
		// ...
    }
    
    public function execute(InputInterface $input, OutputInterface $output) : void
    {
		// Your code here
    }
}

时间间隔规范(如上面的示例中的 "*/5 * * * *")使用标准 cronjob 调度格式,可以随时修改。在此示例中,您必须转义 /,因为它会关闭注解。您还可以通过使用注解多次并使用不同的值来注册您的命令多次。要使您的 CronJob 被扫描并包含在未来的运行中,您必须首先运行 php bin/console shapecode:cron:scan - 它将在您下一次运行 php app/console shapecode:cron:run 时被安排运行。

注册您的新 Cron

$ php bin/console shapecode:cron:scan
$ php bin/console shapecode:cron:run

自动运行 cron 任务

此包的设计理念是您的任务将以最小间隔运行 - 任务将不会比您安排的更频繁地运行,但它们只能在你触发它们时运行(通过运行 bin/console shapecode:cron:run)。

为了方便起见,您可以在系统中创建一个类似这样的 cron 作业

*/5 * * * * php /path/to/symfony/bin/console shapecode:cron:run

这将安排您的任务最多每 5 分钟运行一次 - 例如,计划每 3 分钟运行的任务将只会每 5 分钟运行一次。

配置

清理

默认情况下,您的日志将在 7 天后清除,以避免数据库中有太多条目。
您可以通过设置配置来更改此设置。

shapecode_cron:
    results:
        auto_prune: true # default
        interval: 7 days ago # default. A date time interval specification