This bundle will allow you to easily manage scheduling for Symfony's console commands (native or not) with cron expression. See Wiki for Details
Version 4.x has the goal to use modern Php and Symfony features and low maintenance. So only Php >= 8.0 and Symfony ^4.4.20|^5.3 are supported at the moment.
The following table shows the compatibilities of different versions of the bundle :
Version | Symfony | PHP |
---|---|---|
4.0 (master) | ^4.4.20|^5.3 | >=8.0 |
3.x | ^4.4.20|^5.3 | >=7.3 |
2.2.x | ^3.4|^4.3 | ^7.1 |
When using Symfony Flex there is an installation recipe.
To use it, you have to enable contrib recipes on your project :
composer config extra.symfony.allow-contrib true
composer req dukecity/command-scheduler-bundle
If you're using DoctrineMigrationsBundle (recommended way):
php bin/console make:migration
php bin/console doctrine:migrations:migrate
Without DoctrineMigrationsBundle:
php bin/console doctrine:schema:update --force
php bin/console assets:install --symlink --relative public
Add this line to your security config.
- { path: ^/command-scheduler, role: ROLE_ADMIN }
Check new URL /command-scheduler/list
- API for all functions (in development)
- Event-Handling (preExecution, postExecution). You can subscribe to this Events
- Monitoring: Optional Notifications with the Symfony Notifier Component. Default: E-Mail
- Refactored Execution of Commands to Services. You can use them now from other Services.
- Handled error in Command Parsing. So there is no 500 Error while parsing commands.
- You CLI-commands for add, remove and list scheduled commands
- Improved UI of command-execution in cli
- An admin interface to add, edit, enable/disable or delete scheduled commands.
- For each command, you define :
- name
- symfony console command (choice based on native
list
command) - cron expression (see Cron format for informations)
- output file (for
$output->write
) - priority
- A new console command
scheduler:execute [--dump] [--no-output]
which will be the single entry point to all commands - Management of queuing and prioritization between tasks
- Locking system, to stop scheduling a command that has returned an error
- Monitoring with timeout or failed commands (Json URL and command with mailing)
- Translated in french, english, german and spanish
- An EasyAdmin 2 + 3 configuration template available here
- Beta - Handle commands with a deamon (unix only) if you don't want to use a cronjob
See the documentation here.
This bundle is under the MIT license. See the complete license for info.