PHP Laravel定時任務Schedule【干貨】

下面由laravel教程欄目給大家介紹php laravel定時任務schedule,希望對需要的朋友有所幫助!

PHP Laravel定時任務Schedule【干貨】

前提:本文方法是利用Linux的crontab定時任務來協助實現Laravel調度(Mac也一樣)。

一、首先添加Crontab定時任務,這里只做簡單介紹。

用命令crontab -e 添加如下內容

*?*?*?*?*?/usr/local/bin/php?/usr/local/var/www/projectName/artisan?schedule:run?>>?/dev/null?2>&1

如圖:

立即學習PHP免費學習筆記(深入)”;

PHP Laravel定時任務Schedule【干貨】

上面命令Crontab會每分鐘去調Laravel的schedule命令,然后Laravel判斷執行任務。

注意:要注意php和artisan的目錄,which php可以查看php目錄

***** 你的命令

另外上面的命令前面的5個*分別代表分鐘、小時、天、月、星期。

分鐘:0-59的整數,默認*和*/1 代表1分鐘。

小時:0-23的整數。

天:1-31的整數。

月:1-12的整數。

星期:0-7的整數,0和7都代表星期日。

crontab -l 可以列出當前的定時任務。

二、添加Laravel調度任務。

1、在AppConsoleKernel類中定義你的調度任務:

<?php namespace AppConsole; use IlluminateConsoleSchedulingSchedule; use LaravelLumenConsoleKernel as ConsoleKernel; use Log; class Kernel extends ConsoleKernel {     /**      * The Artisan commands provided by your application.      * 定義Artisan命令      * @var array      */     protected $commands = [                 AppConsoleCommandstest::class,     ];     /**      * Define the application&#39;s command schedule.      * 定義調度任務      * @param  IlluminateConsoleSchedulingSchedule  $schedule      * @return void      */     protected function schedule(Schedule $schedule)     {         //方法一: //            $schedule->call(function?()?{ //????????????????Log::info('任務調度'); //????????????})-&gt;everyMinute(); ????????//方法二: ????????$schedule-&gt;command('test')-&gt;everyMinute(); ????} }

上面舉例了兩種實現方法,方法一是用閉包,方法二是用Artisan命令實現的。

調度的時間可以有多種:

-&gt;cron(‘*?*?*?*?*’);?在自定義Cron調度上運行任務 -&gt;everyMinute();?每分鐘運行一次任務 -&gt;everyFiveMinutes();?每五分鐘運行一次任務 -&gt;everyTenMinutes();?每十分鐘運行一次任務 -&gt;everyThirtyMinutes();?每三十分鐘運行一次任務 -&gt;hourly();?每小時運行一次任務 -&gt;daily();?每天凌晨零點運行任務 -&gt;dailyAt(‘13:00’);?每天13:00運行任務 -&gt;twiceDaily(1,?13);?每天1:00?&amp;?13:00運行任務 -&gt;weekly();?每周運行一次任務 -&gt;monthly();?每月運行一次任務

還有一下額外的方法,請參考:http://laravelacademy.org/post/235.html

下面繼續方法二的操作:

三、定義Artisan命令的方法:

<?php  namespace AppConsoleCommands; use IlluminateConsoleCommand; use Log; class test extends Command {     /**      * The console command name.      *      * @var string      */     protected $name = &#39;test:putcache&#39;;     /**      * The console command description.      *      * @var string      */     protected $description = &#39;test controller&#39;;     /**      * Execute the console command.      *      * @return mixed      */     public function handle()     {             //這里做任務的具體處理,可以用模型             Log::info(&#39;任務調度&#39;.time());     } }

好了,以上就可以執行定時任務了,有個小技巧如果上面的任務沒執行可以用命令php artisan list 可以打印出一些錯誤信息。

更多laravel相關技術文章,請訪問laravel欄目!

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享