alexandrebulete / ddd-scheduler-bundle
See and run your Symfony Scheduler tasks from the back office: a read-only catalogue (command, cron, next run, last run and status) with a one-click manual run, built on Symfony Scheduler and Messenger.
Package info
github.com/AlexandreBulete/ddd-scheduler-bundle
Type:symfony-bundle
pkg:composer/alexandrebulete/ddd-scheduler-bundle
Requires
- php: ^8.4
- alexandrebulete/ddd-doctrine-bridge: ^1.4
- alexandrebulete/ddd-foundation: ^1.5
- alexandrebulete/ddd-sylius-bundle: ^1.0
- doctrine/dbal: ^4.3
- doctrine/doctrine-bundle: ^2.13 || ^3.0
- doctrine/doctrine-migrations-bundle: ^3.7 || ^4.0
- doctrine/migrations: ^3.8
- doctrine/orm: ^3.3
- dragonmantank/cron-expression: ^3.3
- pagerfanta/core: ^4.0
- psr/clock: ^1.0
- psr/log: ^3.0
- sylius/admin-ui: >=0.10
- sylius/grid-bundle: ^1.13
- sylius/resource-bundle: >=1.14
- symfony/clock: ^7.0 || ^8.0
- symfony/config: ^7.0 || ^8.0
- symfony/console: ^7.0 || ^8.0
- symfony/dependency-injection: ^7.0 || ^8.0
- symfony/doctrine-bridge: ^7.0 || ^8.0
- symfony/event-dispatcher: ^7.0 || ^8.0
- symfony/framework-bundle: ^7.0 || ^8.0
- symfony/http-foundation: ^7.0 || ^8.0
- symfony/messenger: ^7.0 || ^8.0
- symfony/routing: ^7.0 || ^8.0
- symfony/scheduler: ^7.0 || ^8.0
- symfony/security-csrf: ^7.0 || ^8.0
- symfony/translation: ^7.0 || ^8.0
- symfony/uid: ^7.0 || ^8.0
Requires (Dev)
- deptrac/deptrac: ^4.7
- phpstan/phpstan: ^2.1
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/phpunit: ^12.0 || ^13.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
See and run your Symfony Scheduler tasks from the back office.
A read-only catalogue of every recurring task — command, description, cron
expression, next planned run, last observed run and its status — under
System -> Schedules, with a one-click manual run. Each task has its own
page: what it does, its next runs, and the history of its runs (scheduled or
manual). Run outcomes are projected into a
small scheduler_run read model from the Messenger worker events.
Standalone: no domain, no project notion. The schedules are declared in configuration.
Configuration
# config/packages/scheduler.yaml scheduler: schedules: - command: 'outbox:purge' cron: '0 3 * * 0' description: | Removes the tracking of async tasks that succeeded more than 30 days ago. Failed tasks are never removed. If it fails, nothing is urgent. - { command: 'activity:purge', cron: '30 3 * * 0' } admin: enabled: true # the back-office screen grid_limits: [25, 50, 100]
The schedule is named default, so Symfony Scheduler exposes it on the
scheduler_default transport. For the tasks to actually fire, a worker must
consume it:
php bin/console messenger:consume scheduler_default async
description is optional: without it, the task page shows the console
command's own description. Line breaks are kept.
The catalogue screen works regardless; "last run / status" and the history
fill in once the worker has run the tasks. A manual Run goes through the
async transport and is recorded too, with the origin "manual".
Upgrading from 1.0
Run the bundle's migrations: 1.1 adds an origin column to scheduler_run
(default schedule, so existing rows stay valid).