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