akki-io / cron-expression-generator
Create a cron expression based on user input
Requires
- php: ^7.4|^8.0
- illuminate/filesystem: ^8.42
- illuminate/translation: ^8.42
- illuminate/validation: ^8.42
- laravel/helpers: ^1.4
Requires (Dev)
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-11-27 22:47:11 UTC
README
Cron Expression Generator
Generate cron expressions based on user inputs.
Installation
You can install the package via composer:
composer require akki-io/cron-expression-generator
Introduction
A CRON expression is a string representing the schedule for a particular command to execute. The parts of a CRON schedule are as follows:
* * * * * - - - - - | | | | | | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +---------- month (1 - 12) | | +--------------- day of month (1 - 31) | +-------------------- hour (0 - 23) +------------------------- min (0 - 59)
This package supports the following different options for each schedule.
Usage
You can set the $options
array below based on the different options as outlined above.
use AkkiIo\CronExpressionGenerator\CronExpressionGenerator; $options = []; $cronExpression = (new CronExpressionGenerator($options))->generate();
Examples
Generate cron expression for every minute
$options = []; $cronExpression = (new CronExpressionGenerator($options))->generate(); // * * * * *
Generate cron expression for once every hour
$options = [ 'minute' => [ 'type' => 'ONCE', 'at' => 0, ], 'hour' => [ 'type' => 'EVERY', 'every' => 1, ], ]; $cronExpression = (new CronExpressionGenerator($options))->generate(); // 0 */1 * * *
Generate cron expression for once every day at 10:15 AM
$options = [ 'minute' => [ 'type' => 'ONCE', 'at' => 15, ], 'hour' => [ 'type' => 'ONCE', 'at' => 10, ], ]; $cronExpression = (new CronExpressionGenerator($options))->generate(); // 15 10 * * *
Generate cron expression for once every weekday at 10:15 AM
$options = [ 'minute' => [ 'type' => 'ONCE', 'at' => 15, ], 'hour' => [ 'type' => 'ONCE', 'at' => 10, ], 'day_week' => [ 'type' => 'RANGE', 'start' => 1, 'end' => 5, ], ]; $cronExpression = (new CronExpressionGenerator($options))->generate(); // 15 10 * * 1-5
Generate cron expression for once every month of day 22 at 10:15 AM
$options = [ 'minute' => [ 'type' => 'ONCE', 'at' => 15, ], 'hour' => [ 'type' => 'ONCE', 'at' => 10, ], 'day_month' => [ 'type' => 'ONCE', 'at' => 22, ], ]; $cronExpression = (new CronExpressionGenerator($options))->generate(); // 15 10 22 * *
Generate cron expression for every Sunday at 10:15 AM
$options = [ 'minute' => [ 'type' => 'ONCE', 'at' => 15, ], 'hour' => [ 'type' => 'ONCE', 'at' => 10, ], 'day_week' => [ 'type' => 'ONCE', 'at' => 0, ], ]; $cronExpression = (new CronExpressionGenerator($options))->generate(); // 15 10 * * 0
Generate cron expression for every year on Oct 22 at 10:15 AM
$options = [ 'minute' => [ 'type' => 'ONCE', 'at' => 15 ], 'hour' => [ 'type' => 'ONCE', 'at' => 10, ], 'day_month' => [ 'type' => 'ONCE', 'at' => 22, ], 'month' => [ 'type' => 'ONCE', 'at' => 10, ], ]; $cronExpression = (new CronExpressionGenerator($options))->generate(); // 15 10 22 10 *
Testing
composer test
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email hello@akki.io instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.