|
|
@@ -0,0 +1,86 @@
|
|
|
+# UCore任务调度迁移到ServiceProvider
|
|
|
+
|
|
|
+**时间**: 2025年06月23日 03:21
|
|
|
+**任务**: 将UCore的任务调度从console.php迁移到ServiceProvider注册
|
|
|
+
|
|
|
+## 任务背景
|
|
|
+
|
|
|
+根据项目架构规范,UCore任务调度应该使用ServiceProvider注册,而不是在routes/console.php中直接配置。需要将UCore相关的定时任务从console.php中移除,并在UCore的CommandServiceProvider中注册。
|
|
|
+
|
|
|
+## 实施步骤
|
|
|
+
|
|
|
+### 1. 分析现状
|
|
|
+- 检查routes/console.php中的UCore相关调度
|
|
|
+- 发现`ucore:clean-size-rotating-logs`命令每天凌晨3点执行
|
|
|
+- 查看UCore/Providers/CommandServiceProvider.php的现有结构
|
|
|
+
|
|
|
+### 2. 修改UCore/Providers/CommandServiceProvider.php
|
|
|
+- 添加`Illuminate\Console\Scheduling\Schedule`导入
|
|
|
+- 在boot()方法中调用registerSchedules()方法
|
|
|
+- 新增registerSchedules()方法:
|
|
|
+ - 使用`$this->app->booted()`确保在应用启动完成后注册
|
|
|
+ - 注册`ucore:clean-size-rotating-logs`调度:每天凌晨3点执行
|
|
|
+ - 添加描述信息:'清理UCore轮转日志文件'
|
|
|
+
|
|
|
+### 3. 从routes/console.php中移除UCore调度
|
|
|
+- 删除`ucore:clean-size-rotating-logs`的调度配置行
|
|
|
+- 保留其他模块的调度配置不变
|
|
|
+
|
|
|
+### 4. 验证功能
|
|
|
+- 执行`php artisan schedule:list`确认调度注册成功
|
|
|
+- 确认UCore调度显示正确的执行时间和描述
|
|
|
+
|
|
|
+## 技术实现
|
|
|
+
|
|
|
+### 修改的文件
|
|
|
+
|
|
|
+1. **UCore/Providers/CommandServiceProvider.php**
|
|
|
+ ```php
|
|
|
+ protected function registerSchedules(): void
|
|
|
+ {
|
|
|
+ // 在应用完全启动后注册定时任务
|
|
|
+ $this->app->booted(function () {
|
|
|
+ $schedule = $this->app->make(Schedule::class);
|
|
|
+
|
|
|
+ // 每天凌晨3点清理 size_rotating_daily 日志文件(保留配置的天数)
|
|
|
+ $schedule->command('ucore:clean-size-rotating-logs')
|
|
|
+ ->dailyAt('03:00')
|
|
|
+ ->description('清理UCore轮转日志文件');
|
|
|
+ });
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+2. **routes/console.php**
|
|
|
+ - 移除了UCore相关的调度配置
|
|
|
+
|
|
|
+## 验证结果
|
|
|
+
|
|
|
+执行`php artisan schedule:list`显示:
|
|
|
+```
|
|
|
+0 3 * * * php artisan ucore:clean-size-rotating-logs ............................ Next Due: 23小时后
|
|
|
+```
|
|
|
+
|
|
|
+调度成功注册,功能正常。
|
|
|
+
|
|
|
+## 优势
|
|
|
+
|
|
|
+1. **架构清晰**: UCore的调度逻辑集中在自己的ServiceProvider中
|
|
|
+2. **模块化**: 每个模块管理自己的调度,便于维护
|
|
|
+3. **可扩展**: 后续UCore新增调度可以直接在registerSchedules()方法中添加
|
|
|
+4. **符合规范**: 遵循项目架构设计原则
|
|
|
+
|
|
|
+## 提交信息
|
|
|
+
|
|
|
+```
|
|
|
+重构:将UCore任务调度从console.php迁移到ServiceProvider注册
|
|
|
+
|
|
|
+- 在UCore/Providers/CommandServiceProvider.php中添加registerSchedules()方法
|
|
|
+- 使用$this->app->booted()确保在应用启动完成后注册调度
|
|
|
+- 将ucore:clean-size-rotating-logs调度从routes/console.php迁移到ServiceProvider
|
|
|
+- 保持调度功能不变:每天凌晨3点清理轮转日志文件
|
|
|
+- 验证调度注册成功,php artisan schedule:list显示正常
|
|
|
+```
|
|
|
+
|
|
|
+## 总结
|
|
|
+
|
|
|
+成功将UCore的任务调度从routes/console.php迁移到UCore的CommandServiceProvider中,实现了更好的模块化架构。调度功能保持不变,但代码组织更加清晰和规范。
|