proklung/task-scheduler-bundle

这是一个用于自定义 Symfony 的任务调度器,它允许您通过 CRON 作业定期运行任务

安装: 4

依赖: 0

建议者: 0

安全性: 0

星标: 1

观察者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.0 2021-05-31 14:55 UTC

This package is auto-updated.

Last update: 2024-09-29 05:49:08 UTC


README

TaskSchedulerBundle包进行分支。根据个人需求进行了改进。

安装

composer.json

    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/proklung/task.scheduler.bundle"
        }
    ]
composer require proklung/task-scheduler-bundle

原始文档

使用方法

首先,将以下行添加到您的CRON配置中:* * * * * php /path/to/your/project/bin/console ts:run >> /dev/null 2>&1

这将调用调度器,它会审查所有计划的任务并相应地分配。您可以通过将任务的ID作为参数传递给命令来直接调用任务。请注意,这个ID是由调度器生成的,与该服务本身没有任何关系。

选项>> /dev/null 2>&1会丢弃任务的打印结果。移除它允许通过电子邮件发送。这可能因服务器配置而异,请参考您的服务器配置。

然后,您需要创建一个任务。任务可以是任何服务!您只需给它分配ts.task标签并实现TaskInterface,或者为了简化,可以扩展自AbstractScheduledTask

每 X 分钟

Foo\Bar\Task 中,计划每 5 分钟执行一次任务

use Prokl\TaskSchedulerBundle\Task\AbstractScheduledTask;
use Prokl\TaskSchedulerBundle\Task\Schedule;

class Task extends AbstractScheduledTask {
  protected function initialize(Schedule $schedule) {
    $schedule
      ->everyMinutes(5); // Perform the task every 5 minutes
  }

  public function run() {
    // Do stuff
  }
}

您的任务现在已计划,并且每 5 分钟将执行一次。

每 X 小时或每日

如果您计划以每小时或每日为基础计划任务,则需要设置 minutes() 以及 hours()everyHours()daily()。**如果您省略了 minutes(),则任务将在计划的小时(s)内每分钟运行一次**。

Foo\Bar\Task 中,计划每 5 小时执行一次任务

use Prokl\TaskSchedulerBundle\Task\AbstractScheduledTask;
use Prokl\TaskSchedulerBundle\Task\Schedule;

class Task extends AbstractScheduledTask {
  protected function initialize(Schedule $schedule) {
    $schedule
      ->minutes(0)
      ->everyHours(5); // Perform the task every 5 hours on minute 0
      
    // Or if you want to perform your task at midnight every day
    // $schedule->minutes(0)->hours(0)->daily();
    
    // Or schedule your task to run once at 9AM daily (this is effectively the same as daily() above)
    // $schedule->minutes(0)->hours(9);
  }

  public function run() {
    // Do stuff
  }
}