4lxndr/cron-bundle

Symfony bundle for scheduled command execution with dependency resolution, job tagging, and automatic failure handling

Maintainers

Package info

github.com/4lxndr/cron-bundle

Wiki

Type:symfony-bundle

pkg:composer/4lxndr/cron-bundle

Statistics

Installs: 27

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

This package is auto-updated.

Last update: 2026-03-03 10:13:34 UTC


README

PHP Version Latest Stable Version License

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