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