laravel 任務調度器

背景:
在實際工做業務中,常常要用到異步任務的方式來進行相關(耗時)任務的處理,這時可能須要採起定時任務的方式來進行。linux自帶的crontab定時器工具能很好的解決這個問題。
每次項目上線的時候,若有新的異步任務腳本就一定要×××器管理員進行crontab配置修改。由於須要動服務器配置,溝通協調確認的過程都避免不了。
laravel自帶的schedule任務調度能很好解決這個痛點。php

laravel任務調度

php artisan schedule:run

實現步驟linux

一、crontab -e 增長定時執行laravel任務調度

#每分鐘執行一次laravel任務調度,注意項目的絕對路徑必須寫正確。
* * * * * * php /site-path/artisan schedule:run >> /dev/null 2>&1

手動運行調度測試:laravel

php artisan schedule:run

二、增長artisan Command命令行腳本文件

不作具體介紹,請參照官方文檔服務器

三、在Console內核中註冊新建的命令行腳本文件信息

console內核文件/app/Console/Kernel.php
protected $commands = [
        "App\\Console\\Commands\\MigrateCompanyDataCommand",//遷移代記帳公司數據到對象表
        "App\\Console\\Commands\\ReportCustomerSettleAccountEventCommand",//上報賬套結賬事件
        "App\\Console\\Commands\\IndicatorComputeCommand",//指標計算

    ];

四、配置調度信息

在調度配置中增長相關command任務的執行頻率便可完成定時任務部署。app

protected function schedule(Schedule $schedule)
    {
         $schedule->command('command任務文件signature')->hourly();
    }

五、關於執行頻率

參照:Illuminate\Console\Scheduling\ManagesFrequencies異步

調度經常使用選項
  • ->cron(' *');在自定義Cron調度上運行任務ide

  • ->everyMinute();每分鐘運行一次任務工具

  • ->everyFiveMinutes();每五分鐘運行一次任務測試

  • ->everyTenMinutes();每十分鐘運行一次任務url

  • ->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');設置時區

  • ->weekdays();只在工做日運行任務

  • ->sundays();每一個星期天運行任務

  • ->mondays();每一個星期一運行任務

  • ->tuesdays();每一個星期二運行任務

  • ->wednesdays();每一個星期三運行任務

  • ->thursdays();每一個星期四運行任務

  • ->fridays();每一個星期五運行任務

  • ->saturdays();每一個星期六運行任務

  • ->between($start, $end);基於特定時間段運行任務

  • ->when(Closure);基於特定測試運行任務
相關文章
相關標籤/搜索