meloflavio/cron-bundle

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

资助包维护!
Paypal
Liberapay

安装次数: 1,063

依赖关系: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 25

类型:symfony-bundle


README

paypal

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

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

安装说明

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

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

composer require shapecode/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 分钟运行。

从命令行禁用和启用单个 cron 作业

此包允许您轻松地从命令行禁用和启用单个计划 CronJobs。

禁用 CronJob,请运行:bin/console shapecode:cron:edit your:cron:job --enable n,其中 your:cron:job 是您项目中要禁用的 CronJob 的名称。

运行上述命令将禁用您的 CronJob,直到您手动再次启用它。请注意,尽管 cron_job 表上的 next_run 字段仍然保留 datetime 值,但您的禁用 cronjob 将不会运行。

启用 cron 作业,请运行:bin/console shapecode:cron:edit your:cron:job --enable y,其中 your:cron:job 是您项目中要启用的 CronJob 的名称。

配置

清理

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

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