In every website or any panel, we need to make the schedules for the normal routines, with the help of which, the daily tasks can be handled. It is a very useful as well as a necessary method.
Laravel Scheduler provides a beautiful platform to create the scheduling or the “cron jobs”. All we need to do is to make the command and schedule the time which we want to run that task.
For that, the easiest way to build scheduling is as described below.
First, we have to write the cron job in our server which will run the all schedules which we have made in our system. There is no need to add all the entries for all the schedules which we have created. Laravel automatically runs all the schedules with the below command.
* * * * * php /project_path/artisan schedule:run >> /dev/null 2>&1
This will handle all the command which we have created in the Laravel system.
Now we have to make the command which will handle the task. So for that, first we have to make command with:
php artisan make:command command_name
Now in Laravel 5.5, we don’t have to register the command, Laravel 5.5 will register all the commands automatically. We only need to define the schedule at which time we have to run the command. Laravel provides several methods to do it quickly. Refer (https://laravel.com/docs/5.5/scheduling#schedule-frequency-options) this.
We can also schedule the queued jobs with Laravel, for that we have to write the following line in schedule method:
We can run shell scripts command from laravel, as described below:
$schedule->job(new EmailPost)->everyFiveMinutes();
We can also prevent the task overlapping, with
Which one is best? Laravel Vs Codeigniter?
withoutOverlapping()
method, so that if one task is running, then another task have to wait till the first task is finished. We can make it possible like:
$schedule->command(‘Invoice:build’)->withoutOverlapping();
One important point is laravel not runs the scheduled commands in the maintenance mode, if we want to run the command even in the maintenance mode, we have to use
evenInMaintenanceMode()
method as follows:
$schedule->command(‘Invoice:build’)->evenInMaintenanceMode();
Laravel also provides the methods for output of the commands, If we want to store output to the file use sendOutputTo() method:
$schedule->command(‘Invoice:build’)->daily()->sendOutputTo($filePath);
Or for appending the output to file use appendOutputTo() method like:
$schedule->command(‘Invoice:build’)->daily()->appendOutputTo($filePath);
We can also email the output to the given email address with emailOutputTo() method:
$schedule->command(‘Invoice:build’)->daily()->appendOutputTo($filePath)->emailOutputTo(‘[email protected]’);
You can take help regarding any queries from our talented Laravel developers.
About Author
Tarun Bansal - Technical Head
Tarun is a technology enthusiast with a flair for solving complex challenges. His technical expertise and deep knowledge of emerging trends have made him a go-to person for strategic tech initiatives. Passionate about innovation, Tarun continuously explores new ways to drive efficiency and performance in every project he undertakes.