創建定時任務
crontab -e
#添加代碼
* * * * * /usr/bin/php7.0 /var/www/html/laravel/artisan schedule:run >> /dev/null 2>&1
注意:/usr/bin/php7.0為你的php位置 ,* * * * *分別代表 分 時 日 月 周 (定時任務的時間) /var/www/html/laravel/為你的項目位置
查看定時任務
crontab -l
定義調度
在App\Console\Commands下創建Test.php
<?php namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Foundation\Inspiring;
use Log;
class Test extends Command {
protected $name = 'test';//命令名稱
protected $description = '測試'; // 命令描述,沒什么用
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
log::info('test');
// 功能代碼寫到這里
}
}
編輯 app/Console/Kernel.php 文件,將新生成的類進行注冊:
<?php namespace App\Console;
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 = [
\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->command('test')//Test.php中的name
->everyFiveMinutes();//每五分鍾執行一次
}
}
PS:如果有多個定時任務,只需要參照test.php再次生成一個,Kernel.php中的$commands數組中再添加新加的類,schedule中$schedule->command('新name')->everyFiveMinutes();即可
常用:
->cron('* * * * *'); 在自定義Cron調度上運行任務
->everyMinute(); 每分鍾運行一次任務
->everyFiveMinutes(); 每五分鍾運行一次任務
->everyTenMinutes(); 每十分鍾運行一次任務
->everyThirtyMinutes(); 每三十分鍾運行一次任務
->hourly(); 每小時運行一次任務
->daily(); 每天凌晨零點運行任務
->dailyAt('13:00'); 每天13:00運行任務
->twiceDaily(1, 13); 每天1:00 & 13:00運行任務
->weekly(); 每周運行一次任務
->monthly(); 每月運行一次任務
->monthlyOn(4, '15:00'); 每月4號15:00運行一次任務
->quarterly(); 每個季度運行一次
->yearly(); 每年運行一次
->timezone('America/New_York'); 設置時區
在App\Console\Kernel.php中編寫laravel代碼
protected function schedule(Schedule $schedule)
{
$schedule->call(
'App\Http\Controllers\Index\UserController@send_sgin_Mamage'
)->at('7:30')->weekdays();
$schedule->call(
'App\Http\Controllers\Index\UserController@send_sgin_Mamage'
)->at('11:30')->weekdays();
}