mkijak / cronjob-commands-bundle
Runs (or not) registered Symfony commands according to cron expressions
Installs: 1 494
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8.0
- dragonmantank/cron-expression: ~2.1|~3.0
- symfony/console: ~5.0|~6.0|~7.0
- symfony/framework-bundle: ~5.0|~6.0|~7.0
- symfony/lock: ~5.0|~6.0|~7.0
README
Using this bundle you can manage cron jobs with yaml configuration of your Symfony application.
It:
- provides a simple way of running commands according to cron expressions
- supports command arguments, options and verbosity settings
- prints full output of running commands
- uses https://github.com/dragonmantank/cron-expression to resolve cron expressions
Installing
Update composer.json:
composer require mkijak/cronjob-commands-bundle
Enable the bundle in Symfony application:
# config/bundles.php Mkijak\CronJobCommandsBundle\CronJobCommandsBundle::class => ['all' => true],
Configuration
It is recommended to set the timezone (default timezone is UTC and server settings aren't considered).
# config/packages/cron_job_commands.yaml cron_job_commands: timezone: UTC schedule: command1: name: app:command #command name registered in symfony enabled: true #default: true cron_expression: "* * * * *" #supports also predefined keywords e. g. "@daily", see https://github.com/dragonmantank/cron-expression arguments: argument1name: value argument2name: value options: option1name: value option2name: value multivalue_options: option1name: - value1 - value2 option2name: - value1 command2: name: app:another_command cron_expression: "@daily"
Usage
Run the "trigger-command" once per minute. Consider using quiet mode for less output.
For cron: add to crontab (crontab -e
):
* * * * * /path/to/symfony/bin/console cron_commands:trigger -q
In the quiet mode you can still display some messages from your commands setting visibility level as a second parameter of the writeln function (or 3rd parameter of the write function):
use Symfony\Component\Console\Output\OutputInterface; /** @var OutputInterface $output */ $output->writeln('<error>Message</error>', OutputInterface::VERBOSITY_QUIET)
Requirements
- PHP 8.0 or above
- Symfony 5.0 or newer
Licence
Symfony commands as cron jobs is licenced under the MIT Licence.