matviib / scheduler
Service for scheduling and managing cron tasks in laravel application
Installs: 2 967
Dependents: 0
Suggesters: 0
Security: 0
Stars: 21
Watchers: 2
Forks: 6
Open Issues: 2
Language:HTML
This package is auto-updated.
Last update: 2024-10-22 19:26:42 UTC
README
Installation
First steps
Add Provider for Laravel < 5.5
MatviiB\Scheduler\SchedulerServiceProvider::class,
Publish config and CronTasksList class files:
php artisan vendor:publish
and choose "Provider: MatviiB\Scheduler\SchedulerServiceProvider" if requested.
Files that must be published:
config/scheduler.php
app/Console/CronTasksList.php
Create database table:
php artisan migrate
Let's finish setup
Move your commands from App\Console\Kernel
schedule() function to new file: CronTasksList.php
trait.
Add next line to schedule() function instead of list of commands:
<?php namespace App\Console; use MatviiB\Scheduler\Console\Kernel as SchedulerKernel; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ .. .. ]; /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { // make changes just here // cut your commands from here // and write next line with(new SchedulerKernel())->schedule($schedule); }
Paste your commands to app/Console/CronTasksList.php
trait:
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; /** * Trait CronTasksList * * To use: uncomment all lines and copy your commands list * from app/Console/Kernel.php schedule() to tasks() function. * * @package App\Console */ trait CronTasksList { public function tasks(Schedule $schedule) { // paste your commands here $schedule->command('example:command')->yearly()->withoutOverlapping(); } }
If everything done for now you can run next command, it will show your current commands list
php artisan scheduler:show
And you will see something like this
Scheduler is disabled.
You see standard tasks list.
+-----------------+------------------------------+-----------+-------------+-----+----------+
| command | description | is_active | expression | w_o | interval |
+-----------------+------------------------------+-----------+-------------+-----+----------+
| command:name | Description for command:name | 1 | 0 * * * * * | 1 | 1 hour |
| example:command | Command description | 1 | * * * * * * | 1 | 1 minute |
+-----------------+------------------------------+-----------+-------------+-----+----------+
To use Scheduler you need to copy commands to schedulers table.
Note: every scheduler:create
execution will soft delete old tasks and create fresh commands data.
php artisan scheduler:create
To use Scheduler you need enable it by adding to your .env
next line:
SCHEDULER_ENABLED=true
Let's check status and scheduled tasks:
php artisan scheduler:show
And you will see something like this:
Scheduler is enabled.
You see scheduled tasks list configured with Scheduler.
+-----------------+------------------------------+-----------+-------------+-----+----------+
| command | description | is_active | expression | w_o | interval |
+-----------------+------------------------------+-----------+-------------+-----+----------+
| command:name | Description for command:name | 1 | 0 * * * * * | 1 | 1 hour |
| example:command | Command description | 1 | * * * * * * | 1 | 1 minute |
+-----------------+------------------------------+-----------+-------------+-----+----------+
Usage
You can manage your scheduled task on page /scheduler
by default.
Also you are free to configure it yourself in config/scheduler.php
.
After creating operation you will have your scheduled tasks list and it will ready to work but with scheduler you have some more powerfull things.
- You can create different tasks for same command with different parameters and run it separately.
On the next screenshot you can see the same scheduled task for generate report with argument user equal 1 and option --client=2 for first task and argument user equal 3 and option --client=4 for next one.
This is how the creating task page looks like:
- Next powerfull thing - You can run your tasks from UI imediately with different arguments and options.
Next screenshot shows how it works:
License
Scheduler for Laravel is open-sourced software licensed under the MIT license.