4lxndr / cron-bundle
Symfony bundle for scheduled command execution with dependency resolution, job tagging, and automatic failure handling
Requires
- php: ^8.4
- doctrine/collections: ^2.2
- doctrine/dbal: ^4.4
- doctrine/doctrine-bundle: ^2.13 || ^3.0
- doctrine/orm: ^3.5
- doctrine/persistence: ^4.1
- dragonmantank/cron-expression: ^3.6
- psr/clock: ^1.0
- symfony/config: ^7.4 || ^8.0
- symfony/console: ^7.4 || ^8.0
- symfony/dependency-injection: ^7.4 || ^8.0
- symfony/event-dispatcher: ^7.4 || ^8.0
- symfony/event-dispatcher-contracts: ^3.5 || ^4.0
- symfony/framework-bundle: ^7.4 || ^8.0
- symfony/http-kernel: ^7.4 || ^8.0
- symfony/process: ^7.4 || ^8.0
- symfony/stopwatch: ^7.4 || ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.91
- phpstan/phpstan: ^2.1
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-doctrine: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^12.0
- symfony/clock: ^7.4 || ^8.0
- symfony/var-dumper: ^7.4 || ^8.0
This package is auto-updated.
Last update: 2026-03-03 10:13:34 UTC
README
A Symfony bundle for managing scheduled cron jobs within your application.
Acknowledgments
This bundle builds upon the foundation provided by shapecode/cron-bundle. Thanks to the original authors and contributors for their excellent work.
Requirements
- PHP 8.4+
- Symfony 7.4+ or 8.0+
Installation
composer require 4lxndr/cron-bundle
If Symfony Flex doesn't auto-register the bundle, add it to config/bundles.php:
return [ // ... Shapecode\Bundle\CronBundle\ShapecodeCronBundle::class => ['all' => true], ];
Update your database schema:
php bin/console doctrine:schema:update --force
Quick Start
Create a Symfony console command and add the AsCronJob attribute:
use Shapecode\Bundle\CronBundle\Attribute\AsCronJob; use Symfony\Component\Console\Command\Command; #[AsCronJob('*/5 * * * *')] class MyTaskCommand extends Command { protected function configure(): void { $this->setName('app:my-task'); } protected function execute(InputInterface $input, OutputInterface $output): int { // Your task logic here return Command::SUCCESS; } }
Scan and run your jobs:
php bin/console shapecode:cron:scan php bin/console shapecode:cron:run
Add to your system crontab to run automatically every 5 minutes:
*/5 * * * * php /path/to/project/bin/console shapecode:cron:run
Documentation
- Commands — Full reference for all available console commands
- Configuration — Bundle configuration options
- Tags — Organizing and filtering jobs with tags
- Dependencies — Job dependency chains, modes, and failure handling
- Pause Windows — Defining daily time ranges where jobs are silently skipped
Database Migrations
When upgrading to a version that adds new columns (tags, dependencies, pause windows), migrate your database:
bin/console doctrine:migrations:diff bin/console doctrine:migrations:migrate bin/console shapecode:cron:scan