適用場(chǎng)景
當(dāng)系統(tǒng)內(nèi)置定時(shí)任務(wù)類型無(wú)法滿足業(yè)務(wù)需求時(shí),開(kāi)發(fā)者可通過(guò)本教程快速掌握自定義定時(shí)任務(wù)的擴(kuò)展方法。本指南以"定時(shí)檢測(cè)服務(wù)"為例,演示完整開(kāi)發(fā)流程。
我想添加一個(gè)定時(shí)任務(wù) ,而這里沒(méi)有我需要的,我怎么來(lái)添加
比如我想添加一個(gè)定時(shí)檢測(cè)用戶是否是分銷員的定時(shí)任務(wù)
開(kāi)發(fā)流程
一、注冊(cè)任務(wù)類型
??定位配置文件??
打開(kāi) app/services/system/timer/SystemTimerServices.php
??添加任務(wù)標(biāo)識(shí)?
在 $taskName 數(shù)組中新增任務(wù)類型標(biāo)識(shí)(參考下圖配置示意圖):
說(shuō)明:此處定義的任務(wù)標(biāo)識(shí)將作為系統(tǒng)識(shí)別的唯一Key
protected array $taskName = [
// ...原有配置
'auto_user_promoter' => '檢查用戶是否是推廣員', // 新增任務(wù)類型
];
二、實(shí)現(xiàn)任務(wù)邏輯
- ??定位執(zhí)行入口??打開(kāi) app/listener/system/timer/SystemTimer.php
- ??擴(kuò)展任務(wù)處理??在 implement_timer 方法中添加對(duì)應(yīng)分支:(參考下圖配置示意圖):
public function implement_timer(string $mark)
switch($mark){
// ...原有case
case 'auto_user_promoter':
return app()->make( UserServices::class)->autoUserPromoter();
break;
}
}
三、??創(chuàng)建業(yè)務(wù)方法
再對(duì)應(yīng)的 services 里面寫(xiě)自己的后續(xù)邏輯,如果數(shù)據(jù)量大,建議分批添加隊(duì)列執(zhí)行
四、后臺(tái)管理配置
登錄系統(tǒng)后臺(tái) → 設(shè)置 → 系統(tǒng)維護(hù) → 定時(shí)任務(wù) → 添加定時(shí)任務(wù):
如下圖
總結(jié)
通過(guò)本指南,開(kāi)發(fā)者可以快速完成從任務(wù)注冊(cè)到業(yè)務(wù)實(shí)現(xiàn)的完整流程。建議在實(shí)際開(kāi)發(fā)中結(jié)合業(yè)務(wù)需求進(jìn)行功能擴(kuò)展,并嚴(yán)格遵守系統(tǒng)安全規(guī)范。
以下為關(guān)鍵要點(diǎn)回顧與建議:
核心流程回顧
1、??標(biāo)準(zhǔn)化接入??
類型注冊(cè) → 邏輯實(shí)現(xiàn) → 周期配置 → 后臺(tái)激活 四步完成基礎(chǔ)接入
采用 開(kāi)關(guān)分支+獨(dú)立方法 模式保障代碼可維護(hù)性
2、??關(guān)鍵開(kāi)發(fā)環(huán)節(jié)??
任務(wù)標(biāo)識(shí)定義需保持全局唯一性
周期表達(dá)式建議優(yōu)先采用系統(tǒng)預(yù)置模板
后臺(tái)配置自動(dòng)關(guān)聯(lián)任務(wù)類型與執(zhí)行規(guī)則
通過(guò)規(guī)范化開(kāi)發(fā)與持續(xù)優(yōu)化,定時(shí)任務(wù)模塊可成長(zhǎng)為支撐業(yè)務(wù)穩(wěn)定運(yùn)行的核心調(diào)度中樞。建議每季度開(kāi)展任務(wù)健康度評(píng)審,持續(xù)提升系統(tǒng)可靠性。