A Symfony bundle built to schedule/consume repetitive tasks
Main features
- External transports (Doctrine, Redis, etc)
- External configuration storage (Doctrine, Redis, etc)
- Retry / Remove / Sort policies
- Background worker
- Symfony/Messenger integration
- Mercure integration
Installation
Make sure Composer is installed globally, as explained in the installation chapter of the Composer documentation.
$ composer require guikingone/scheduler-bundle
Quick start
Once installed, time to update the config/bundles.php
:
// config/bundles.php
return [
// ...
SchedulerBundle\SchedulerBundle::class => ['all' => true],
];
Then configure a transport in config/packages/scheduler.yaml
:
# config/packages/scheduler.yaml
scheduler_bundle:
transport:
dsn: 'filesystem://first_in_first_out'
Finally, it's time to create a simple task:
# config/packages/scheduler.yaml
scheduler_bundle:
transport:
dsn: 'filesystem://first_in_first_out'
tasks:
foo:
type: 'command'
command: 'cache:clear'
expression: '*/5 * * * *'
description: 'A simple cache clear task'
options:
env: test
When a task is configured, time to execute it, two approaches can be used:
- Adding a cron entry
* * * * * cd /path-to-your-project && php bin/console scheduler:consume >> /dev/null 2>&1
- Launching the command
scheduler:consume --wait
in a background command