Using this bundle you can manage cron jobs using yaml configuration of your Symfony application
MIT License
Using this bundle you can manage cron jobs with yaml configuration of your Symfony application.
It:
Update composer.json:
composer require mkijak/cronjob-commands-bundle
Enable the bundle in Symfony application:
# config/bundles.php
Mkijak\CronJobCommandsBundle\CronJobCommandsBundle::class => ['all' => true],
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"
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)
Symfony commands as cron jobs is licenced under the MIT Licence.