php artisan make:command
{腳本名稱} 生成執行文件,文件在 app/Console/Commands
中查看。protected $signature = 'stat:generate {start? : 腳本統計的起始時間(選填 eg.2017-10-01 )} {end? : 腳本統計的結束時間(選填)}'; protected $description = '生成每日的統計信息';
$signature屬性中的 start? end? 表示可輸入的可選參數,這裏提供了腳本開始和結束時間的可選項,用於生成指定時間日期內的統計信息,eg. php artisan stat:generate 2017-08-01 。php
public function handle() { // 若是未輸入日期參數,默認選擇前一天做爲統計時間(??是php7新語法) $this->date = $this->argument('start') ?? date('Y-m-d', strtotime('-1 day')); $endDate = $this->argument('end') ?? date('Y-m-d'); // 判斷輸入的日期格式是否正確 if (!strtotime($this->date) || !strtotime($endDate)) { $this->error('請輸入正確的日期格式!');die; } // 循環執行每一天的統計腳本 while ($this->date < $endDate) { // 這裏是須要執行的統計邏輯,sql等 $this->_active_num_game(); // 每執行一次,統計日期加1天 $this->date = date('Y-m-d', strtotime("{$this->date} +1 day")); } }
將如下命令添加到cron 中laravel
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
全部的計劃任務定義在 AppConsoleKernel 類的 schedule 方法中,Artisan命令寫在commands屬性中。sql
protect $commands = [ Commands\{聲明的腳本文件名稱}::class ]; protected function schedule(Schedule $schedule) { // 上面的Artisan命令將在每晚執行 $schedule->command('stat:generate')->daily(); }