dukecity/command-scheduler-bundle

This Symfony bundle will allow you to schedule all your commands just like UNIX crontab

Installs: 22 848

Dependents: 3

Suggesters: 0

Security: 0

Stars: 17

Watchers: 3

Forks: 120

Open Issues: 1

Type:symfony-bundle

v5.0.1 2022-09-17 09:11 UTC

README

Code_Checks codecov

This bundle will allow you to easily manage scheduling for Symfony's console commands (native or not) with cron expression. See Wiki for Details

Versions & Dependencies

Version 5.x has the goal to use modern Php and Symfony features and low maintenance. So only Php >= 8.0 and Symfony ^5.4|^6.0 are supported at the moment.

The following table shows the compatibilities of different versions of the bundle :

Version Symfony PHP
5.0 (master) ^5.4 + ^6.0 >=8.0
4.x ^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

Install

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

Update Database

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

Install Assets

php bin/console assets:install --symlink --relative public

Secure your route

Add this line to your security config.

- { path: ^/command-scheduler, role: ROLE_ADMIN } 

Check new URL /command-scheduler/list

Features

New in Version 5:

  • Drop support of Symfony < 5.4

New in Version 4:

  • 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

Version 3:

  • 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 configuration template available here
  • Beta - Handle commands with a daemon (unix only) if you don't want to use a cronjob

Screenshots

list

new

new2

Documentation

See the documentation here.

License

This bundle is under the MIT license. See the complete license for info.