背景:
在實際工做業務中,常常要用到異步任務的方式來進行相關(耗時)任務的處理,這時可能須要採起定時任務的方式來進行。linux自帶的crontab定時器工具能很好的解決這個問題。
每次項目上線的時候,若有新的異步任務腳本就一定要×××器管理員進行crontab配置修改。由於須要動服務器配置,溝通協調確認的過程都避免不了。
laravel自帶的schedule任務調度能很好解決這個痛點。php
php artisan schedule:run
實現步驟linux
#每分鐘執行一次laravel任務調度,注意項目的絕對路徑必須寫正確。 * * * * * * php /site-path/artisan schedule:run >> /dev/null 2>&1
手動運行調度測試:laravel
php artisan schedule:run
不作具體介紹,請參照官方文檔服務器
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);基於特定時間段運行任務