一、建立命令
php artisan make:command command_name --command=artisan_command_name
# Explanation:
# command_name: 生成的文件名
# artisan_command_name: php artisan 命令調度時的命令名稱
# 結果: 在 /app/Console/Commands/ 下生成名爲 command_name.php 的文件
# Example:
# php artisan make:command LeaderMail --command=LeaderMail
# 生成的文件名:LeaderMail
# 調度時的命令名稱:LeaderMail
二、測試剛纔生成的命令是否OK
php artisan LeaderMail
# Explanation:
# 沒有返回則表示成功。
# 由於 /app/Console/Commands/LeaderMail.php 的 handle 方法中沒有寫內容。寫了就會有返回。
三、編輯生成的文件 /app/Console/Commands/LeaderMail.php 的 handle 方法
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class LeaderMail extends Command
{
/**
* The name and signature of the console command.
* 用來描述命令的名字與參數
* @var string
*/
protected $signature = 'LeaderMail';
/**
* The console command description.
* 存儲命令描述
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
* 執行命令進行的操做
* @return mixed
*/
public function handle()
{
// 這裏是任務的具體處理
}
}
四、編輯 App\Console\Kernel.php 文件,添加調度
# 先到 /app/Console/Kernel.php 中 $commands 數組中進行註冊。
# 而後在 /app/Console/Kernel.php 的 schedule 方法中定義調度任務。
<?php
namespace App\Console;
use App\Console\Commands\LeaderMail;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
* 你的應用程序提供的Artisan命令。
* @var array
*/
protected $commands = [
LeaderMail::class
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
// 每分鐘執行一次獲取領導信箱
// command() 調度時的命令名稱
// everyFiveMinutes() 調度規則
// appendOutputTo() 調度命令進行操做的返回結果記錄文件
$schedule->command('LeaderMail')->everyFiveMinutes()->appendOutputTo(base_path('storage/crontab/log.log'));
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__ . '/Commands');
require base_path('routes/console.php');
}
}
五、編輯機器的定時任務 crontab
# 複習
# crontab -l # 查看
# crontab -e # 編輯
# crontab -r # 刪除全部
# 開始操做
crontab -e
# 而後添加如下語句
* * * * * path-to-your-php/bin/php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
# Explanation:
# path-to-your-php/bin/php 是你的PHP的絕對路徑,經過 which php 能夠獲得;
# path-to-your-project/artisan 是你項目中Laravel框架中根目錄下的 artisan 的絕對路徑;
六、若是想單獨寫出來也能夠
* * * * * path-to-your-php/bin/php /path-to-your-project/artisan LeaderMail >> /dev/null 2>&1