溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

laravel 任務(wù)調(diào)度器

發(fā)布時間:2020-06-20 03:47:27 來源:網(wǎng)絡(luò) 閱讀:1099 作者:hgditren 欄目:web開發(fā)

背景:
在實際工作業(yè)務(wù)中,經(jīng)常要用到異步任務(wù)的方式來進(jìn)行相關(guān)(耗時)任務(wù)的處理,這時可能需要采取定時任務(wù)的方式來進(jìn)行。linux自帶的crontab定時器工具能很好的解決這個問題。
每次項目上線的時候,如有新的異步任務(wù)腳本就必定要×××器管理員進(jìn)行crontab配置修改。因為需要動服務(wù)器配置,溝通協(xié)調(diào)確認(rèn)的過程都避免不了。
laravel自帶的schedule任務(wù)調(diào)度能很好解決這個痛點。

laravel任務(wù)調(diào)度
php artisan schedule:run

實現(xiàn)步驟

1、crontab -e 增加定時執(zhí)行l(wèi)aravel任務(wù)調(diào)度
#每分鐘執(zhí)行一次laravel任務(wù)調(diào)度,注意項目的絕對路徑必須寫正確。
* * * * * * php /site-path/artisan schedule:run >> /dev/null 2>&1 

手動運行調(diào)度測試:

php artisan schedule:run 
2、增加artisan Command命令行腳本文件

不做具體介紹,請參照官方文檔

3、在Console內(nèi)核中注冊新建的命令行腳本文件信息
console內(nèi)核文件/app/Console/Kernel.php
protected $commands = [
        "App\\Console\\Commands\\MigrateCompanyDataCommand",//遷移代記賬公司數(shù)據(jù)到對象表
        "App\\Console\\Commands\\ReportCustomerSettleAccountEventCommand",//上報帳套結(jié)帳事件
        "App\\Console\\Commands\\IndicatorComputeCommand",//指標(biāo)計算

    ];
4、配置調(diào)度信息

在調(diào)度配置中增加相關(guān)command任務(wù)的執(zhí)行頻率即可完成定時任務(wù)部署。

protected function schedule(Schedule $schedule)
    {
         $schedule->command('command任務(wù)文件signature')->hourly();
    }
5、關(guān)于執(zhí)行頻率

參照:Illuminate\Console\Scheduling\ManagesFrequencies

調(diào)度常用選項
  • ->cron(' *');在自定義Cron調(diào)度上運行任務(wù)

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

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

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

  • ->everyThirtyMinutes();每三十分鐘運行一次任務(wù)

  • ->hourly();每小時運行一次任務(wù)

  • ->daily();每天凌晨零點運行任務(wù)

  • ->dailyAt('13:00');每天13:00運行任務(wù)

  • ->twiceDaily(1, 13);每天1:00 & 13:00運行任務(wù)

  • ->weekly();每周運行一次任務(wù)

  • ->monthly();每月運行一次任務(wù)

  • ->monthlyOn(4, '15:00');每月4號15:00運行一次任務(wù)

  • ->quarterly();每個季度運行一次

  • ->yearly();每年運行一次

  • ->timezone('America/New_York');設(shè)置時區(qū)

  • ->weekdays();只在工作日運行任務(wù)

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

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

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

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

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

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

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

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

  • ->when(Closure);基于特定測試運行任務(wù)
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI