Laravel Scheduler
Last updated on by Eric L. Barnes
A brand new feature in Laravel 5 is an Artisan scheduler. This is designed to simplify tasks that need to be scheduled. All that is required is setting up one cron job that calls php artisan schedule:run
and have it run every minute.
Once your cron is setup, you can schedule any task to run in a concise and friendly manner. It takes the pain out of having to remember cron scheduling and is really simple. These schedules are created inside your “app/Console//Kernel.php” file.
Here is an example of a fictional task to clear the cache every hour:
$schedule->command('cache:clear') ->hourly() ->sendOutputTo($filePath) ->emailOutputTo('john@doe.com');
It doesn’t end there. You can also call class methods:
$schedule->call('SomeClass@method')->dailyAt('10:00');
Or use a closure:
$schedule->call(function(){ //..})->everyThirtyMinutes();
And even terminal commands:
$schedule->terminal('gulp task')->fridays()->when(function(){ return true;});
Laravel has always had developers in mind when creating new features and this one is no different. Take a look at the different scheduling methods available:
- ->hourly()
- ->daily()
- ->at($time) // 24 hour time
- ->dailyAt($time)
- ->twiceDaily()
- ->weekdays()
- ->mondays()
- ->tuesdays()
- ->wednesdays()
- ->thursdays()
- ->fridays()
- ->saturdays()
- ->sundays()
- ->weekly()
- ->weeklyOn($day, $time)
- ->monthly()
- ->yearly()
- ->everyFiveMinutes()
- ->everyTenMinutes()
- ->everyThirtyMinutes()
- ->days() // Days of the week.
I love the syntax and there is even more which you can find in this file. If you want to dig deeper check out everything new in Laravel 5
This is another feature that is aimed at increasing your developer happiness. I think you’ll enjoy it and it will bring a lot of power to your apps.
Eric is the creator of Laravel News and has been covering Laravel since 2012.