abc/scheduler

用于管理任务重复执行的调度库

0.2.2 2020-12-01 18:42 UTC

This package is not auto-updated.

Last update: 2024-09-18 13:55:24 UTC


README

基于CRON表达式的PHP库,用于处理调度。

功能

  • 基于CRON表达式定义调度
  • 使用Symfony控制台命令运行调度器
  • 通过实现两个接口实现简单集成

Build Status

注意:此项目仍处于实验阶段!

安装

composer require abc/scheduler

入门

  1. 通过实现ProviderInterface定义调度提供者。

    namespace Abc\Scheduler;
    
    interface ProviderInterface
    {
        /**
         * @return string The provider's name, used to bind a provider to processors
         */
        public function getName(): string;
    
        /**
         * @param int|null $limit
         * @param int|null $offset
         * @return ScheduleInterface[]
         */
        public function provideSchedules(int $limit = null, int $offset = null): array;
    
        public function save(ScheduleInterface $schedule): void;
    }
  2. 通过实现ProcessorInterface定义调度处理器。

    namespace Abc\Scheduler;
    
    /**
     * Process a schedule that is due.
     */
    interface ProcessorInterface
    {
        public function process(ScheduleInterface $schedule);
    }
  3. 将处理器绑定到提供者并初始化ScheduleCommand

    use Abc\Scheduler\Scheduler;
    use Abc\Scheduler\Symfony\ScheduleCommand;
    
    $myProvider = new MyProvider();
    $myProcessor = new MyProcessor();
    
    $scheduler = new Scheduler();
    $scheduler->bind($myProvider, $myProcessor);
    
    $command = new ScheduleCommand($scheduler);
  4. 运行命令

    bin/console abc:schedule

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件