natepage/schedule-bundle

Provides the Command Scheduling logic of Laravel in a Symfony application

Installs: 34

Dependents: 0

Suggesters: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Type:symfony-bundle

dev-master 2019-08-15 14:59 UTC

README

Provides the Command Scheduling logic of Laravel in a Symfony application

Installation

$ composer require loyaltycorp/schedule-bundle

Until a recipe is created for this bundle you will need to register it manually:

// config/bundles.php

return [
    // Other bundles...
    
    LoyaltyCorp\Schedule\ScheduleBundle\ScheduleBundle::class => ['all' => true],
];

Usage

Register Your Scheduled Commands

To register the scheduled commands this bundle implements a concept of "schedule providers", thanks to Symfony's autoconfigure feature, the only thing required is to create services that implement LoyaltyCorp\Schedule\ScheduleBundle\Interfaces\ScheduleProviderInterface. The ScheduleInterface passed to the schedule method offers all the features of the Laravel Console Scheduling.

// src/Schedule/MyScheduleProvider.php

use LoyaltyCorp\Schedule\ScheduleBundle\Interfaces\ScheduleProviderInterface;

final class MyScheduleProvider implements ScheduleProviderInterface
{
    /**
     * Schedule command on given schedule.
     *
     * @param \Loyaltycorp\Schedule\ScheduleBundle\Interfaces\ScheduleInterface $schedule
     *
     * @return void
     */
    public function schedule(ScheduleInterface $schedule): void
    {
        $schedule
            ->command('poc:hello-world', ['-v'])
            ->everyMinute()
            ->setMaxLockTime(120);
    
        $schedule
            ->command('poc:hello-world-2')
            ->everyFiveMinutes();
        }
    }

Run The Schedule

This bundle providers a console command to run the schedule:

$ php bin/console schedule:run