aurimasniekis/scheduler-bundle

简单的 Symfony 任务调度 Bundle

1.0.0 2020-03-22 06:14 UTC

This package is auto-updated.

Last update: 2024-09-22 16:26:46 UTC


README

Latest Version on Packagist Software License Build Status Code Quality Code Coverage Mutation testing badge Total Downloads

Email

为 Symfony 提供简单调度 Bundle,允许在不修改 cron tab 的前提下,以特定 cron 表达式执行代码。

安装

通过 Composer

$ composer require aurimasniekis/scheduler-bundle

bundle.php 添加一行代码

<?php

return [
    Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
    // ...
    AurimasNiekis\SchedulerBundle\AurimasNiekisSchedulerBundle::class => ['all' => true],
];

将调度器添加到 cron tab 中,使其每分钟运行一次

* * * * * /path/to/symfony/install/bin/console scheduler:run 1>> /dev/null 2>&1

使用方法

Scheduler Bundle 使用 Symfony 容器 autoconfigure 功能,自动将实现 ScheduledJobInterfaceNamedScheduledJobInterface 接口的所有服务注册到调度器中。

创建计划任务有两种选择:简单计划任务或命名计划任务。前者使用类名作为任务名称,后者提供定义任务名称的方法。

<?php

use AurimasNiekis\SchedulerBundle\ScheduledJobInterface;

class NamelessJob implements ScheduledJobInterface
{
    public function __invoke(): void
    {
        // Execute some logic        
    }

    public function getSchedulerExpresion(): string
    {
        return '*/5 * * * *'; // Run every 5 minutes   
    }
}
<?php

use AurimasNiekis\SchedulerBundle\NamedScheduledJobInterface;

class NamedJob implements NamedScheduledJobInterface
{
    public function __invoke(): void
    {
        // Execute some logic        
    }

    public function getName(): string
    {
        return 'named_job';
    }

    public function getSchedulerExpresion(): string
    {
        return '*/5 * * * *'; // Run every 5 minutes   
    }
}

控制台命令

scheduler:list

列出所有注册的计划任务及其下一次计划运行时间

$ bin/console scheduler:list

+------------------------------+-------------+---------- Scheduled Jobs -------------------------------------------------------+
| Name                         | Expression  | Next Scheduled Run Times                                                        |
+------------------------------+-------------+---------------------------------------------------------------------------------+
| named_job                    | */5 * * * * | 2020-03-22T04:55:00+00:00, 2020-03-22T05:00:00+00:00, 2020-03-22T05:05:00+00:00 |
| App\ScheduledJob\NamelessJob | */5 * * * * | 2020-03-22T04:55:00+00:00, 2020-03-22T05:00:00+00:00, 2020-03-22T05:05:00+00:00 |
+------------------------------+-------------+---------------------------------------------------------------------------------+

scheduler:execute

手动执行计划任务

$ bin/console scheduler:execute named_job

Executing Scheduled Job: "named_job"

scheduler:run

命令用于在此刻运行所有计划任务。(用于 cron 作业定义)

* * * * * /path/to/symfony/install/bin/console scheduler:run 1>> /dev/null 2>&1

测试

运行测试用例

$ composer test

运行带覆盖率的测试用例(HTML 格式)

$ composer test-coverage

运行 PHP 风格检查器

$ composer cs-check

运行 PHP 风格修复器

$ composer cs-fix

贡献

请参阅 CONTRIBUTINGCONDUCT 以获取详细信息。

许可证

请参阅 许可证文件 以获取更多信息。