[筆記]laravel定時任務的實現

李先生發表於2021-03-05

1.建立任務執行檔案

    command php artisan make:command TestTask

會在app\console\Commands 下生成 TestTask.php

2.編輯任務執行檔案

class TestTask extends Command


{
    protected $signature = 'b5net:test';//命令名,自己隨意寫

    protected $description = '測試任務';//命令描述
    public function __construct()
     {  
         parent::__construct();
    }
    public function handle()
     {  //執行的邏輯
          file_put_contents('aaa.txt',date('Y-m-d H:i:s').'/r/n',FILE_APPEND);
  }
}

3.在app\Console\Kernel.php中引入和設定執行間隔

protected $commands = [
     \App\Console\Commands\TestTask::class //引入命令類
];
protected function schedule(Schedule $schedule)
{
   $schedule->command('b5net:test')->everyFiveMinutes();//每5分鐘執行一次,這裡的5分鐘,在window設定計劃任務時,要把開始分鐘數設為5的倍數
}

4.新增伺服器的計劃任務

linux下使用crontab:自己百度命令
    crontab  ***** php artisan schedule:run > /dev/null 2>&1

windows下
1.建立xxx.bat檔案,內容如下

cd /d D:\Apro_php\b5laravelcmf\         專案的絕對路徑
php artisan schedule:run > NUL 2>&1

2.建立.vbs檔案,內容如下

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c D:\Apro_php\b5laravelcmf\public\xxx.bat",vbhide

裡面的D:\Apro_php\b5laravelcmf\public\xxx.bat為第一步建立的xxx.bat檔案的路徑。之所以建立.vbs檔案,是定時執行.bat檔案時會彈出dos介面,執行.vbs是後臺靜默執行

3.找到任務計劃程式建立計劃任務


注意這裡的1分鐘是選擇了5分鐘,然後手動刪除5自己寫上的1

本作品採用《CC 協議》,轉載必須註明作者和本文連結
流年的舊吉他,彈不出時光的悲傷;慧極必傷,情深不壽

相關文章