Home > Article > Backend Development > Analysis of PHP's Laravel scheduled task Schedule
This article mainly introduces the analysis of PHP's Laravel scheduled task Schedule. It has a certain reference value. Now I share it with you. Friends in need can refer to it.
Premise: The method in this article is to use Linux's crontab scheduled tasks help implement Laravel scheduling (Mac too).
1. First add the Crontab scheduled task. Here is just a brief introduction.
Use the command crontab -e to add the following content
* * * * * /usr/local/bin/php /usr/local/var/www/projectName/artisan schedule:run >> /dev/null 2>&1
The above command Crontab will adjust Laravel's schedule command every minute, and then Laravel will judge and execute the task.
Note: Pay attention to the directories of php and artisan, which php can view the php directory ***** Your command
In addition, the 5 * in front of the above command represent respectively Minutes, hours, days, months, weeks.
Minute: an integer from 0-59, the default * and */1 represent 1 minute.
Hour: an integer from 0-23.
Day: an integer from 1-31.
Month: an integer from 1 to 12.
Week: an integer from 0 to 7, both 0 and 7 represent Sunday.
crontab -l can list the current scheduled tasks.
2. Add Laravel scheduling task.
1. Define your scheduling task in the App\Console\Kernel class:
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Laravel\Lumen\Console\Kernel as ConsoleKernel; use Log;class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * 定义Artisan命令 * @var array */ protected $commands = [ \App\Console\Commands\test::class, ]; /** * Define the application's command schedule. * 定义调度任务 * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { //方法一:// $schedule->call(function () {// Log::info('任务调度');// })->everyMinute(); //方法二: $schedule->command('test')->everyMinute(); } }
Two implementation methods are given above. Method one is to use closures, and method two is to use Artisan commands.
There are many scheduling times:
->cron('* * * * *'); Run tasks on a custom Cron schedule
->everyMinute(); Run once every minute Task
->everyFiveMinutes(); Run a task every five minutes
->everyTenMinutes(); Run a task every ten minutes
->everyThirtyMinutes(); Run a task every thirty minutes
->hourly(); Run the task every hour
->daily(); Run the task every day at 0:00 AM
->dailyAt('13:00'); Run the task every day at 13:00 Task
->twiceDaily(1, 13); Run the task every day at 1:00 & 13:00
->weekly(); Run the task once a week
->monthly(); Every Run the task once a month
There are additional methods, please refer to: http://laravelacademy.org/post/235.html
Continue the operation of method two:
3. Define Artisan Command method:
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Log;class test extends Command { /** * The console command name. * * @var string */ protected $name = 'test:putcache'; /** * The console command description. * * @var string */ protected $description = 'test controller'; /** * Execute the console command. * * @return mixed */ public function handle() { //这里做任务的具体处理,可以用模型 Log::info('任务调度'.time()); } }
Okay, the above can execute the scheduled task. There is a little trick. If the above task is not executed, you can use the command php artisan list to print out some error messages
The above is the entire content of this article. I hope it will be helpful to everyone's study. For more related content, please pay attention to the PHP Chinese website!
Related recommendations:
Use another method to conduct Laravel database testing (SQLite)
The above is the detailed content of Analysis of PHP's Laravel scheduled task Schedule. For more information, please follow other related articles on the PHP Chinese website!