|
|
@@ -0,0 +1,150 @@
|
|
|
+# URS活跃状态更新定时任务配置
|
|
|
+
|
|
|
+## 任务概述
|
|
|
+
|
|
|
+**时间**: 2025年07月05日 03:57
|
|
|
+**任务**: 为UrsUpdateActiveStatusCommand添加任务调度,设置在每日1:05执行,后台运行
|
|
|
+**状态**: ✅ 已完成
|
|
|
+
|
|
|
+## 实施内容
|
|
|
+
|
|
|
+### 1. 添加定时任务调度
|
|
|
+
|
|
|
+**文件**: `app/Module/UrsPromotion/Providers/UrsPromotionServiceProvider.php`
|
|
|
+
|
|
|
+在现有的定时任务配置中添加了URS用户活跃状态更新任务:
|
|
|
+
|
|
|
+```php
|
|
|
+// 每天01:05执行用户活跃状态更新
|
|
|
+$schedule->command('urs:update-active-status')
|
|
|
+ ->dailyAt('01:05')
|
|
|
+ ->description('URS用户活跃状态更新 - 基于最近15天活动时间更新用户活跃状态')
|
|
|
+ ->withoutOverlapping() // 防止重复执行
|
|
|
+ ->runInBackground(); // 后台运行
|
|
|
+```
|
|
|
+
|
|
|
+### 2. 任务配置详情
|
|
|
+
|
|
|
+- **执行时间**: 每日 01:05
|
|
|
+- **命令**: `php artisan urs:update-active-status`
|
|
|
+- **描述**: URS用户活跃状态更新 - 基于最近15天活动时间更新用户活跃状态
|
|
|
+- **防重复**: `withoutOverlapping()` - 防止任务重复执行
|
|
|
+- **后台运行**: `runInBackground()` - 任务在后台执行,不阻塞其他任务
|
|
|
+
|
|
|
+### 3. 执行时间安排
|
|
|
+
|
|
|
+当前URS模块的定时任务时间安排:
|
|
|
+- **00:30** - URS合伙人分红任务
|
|
|
+- **01:05** - URS用户活跃状态更新任务
|
|
|
+
|
|
|
+这样的时间安排确保:
|
|
|
+1. 避免与其他任务冲突
|
|
|
+2. 在用户活动较少的凌晨时段执行
|
|
|
+3. 为后续可能的达人等级更新任务预留时间
|
|
|
+
|
|
|
+## 验证结果
|
|
|
+
|
|
|
+### 1. 定时任务列表确认
|
|
|
+
|
|
|
+通过 `php artisan schedule:list` 命令验证,任务已成功注册:
|
|
|
+
|
|
|
+```
|
|
|
+5 1 * * * php artisan urs:update-active-status ....... Next Due: 21小时后
|
|
|
+```
|
|
|
+
|
|
|
+### 2. 命令功能测试
|
|
|
+
|
|
|
+使用 `--dry-run` 模式测试命令功能:
|
|
|
+
|
|
|
+```bash
|
|
|
+php artisan urs:update-active-status --dry-run
|
|
|
+```
|
|
|
+
|
|
|
+**测试结果**:
|
|
|
+- 总用户数:3124
|
|
|
+- 活跃用户:1727 (55.28%)
|
|
|
+- 不活跃用户:1397
|
|
|
+- 最近24小时更新:1830
|
|
|
+- 需要检查的用户:1293
|
|
|
+
|
|
|
+命令运行正常,统计信息准确。
|
|
|
+
|
|
|
+## 技术特性
|
|
|
+
|
|
|
+### 1. 防重复执行
|
|
|
+使用 `withoutOverlapping()` 确保同一时间只有一个活跃状态更新任务在运行,避免:
|
|
|
+- 数据库锁冲突
|
|
|
+- 重复更新同一用户
|
|
|
+- 系统资源浪费
|
|
|
+
|
|
|
+### 2. 后台执行
|
|
|
+使用 `runInBackground()` 确保任务在后台执行,特点:
|
|
|
+- 不阻塞其他定时任务
|
|
|
+- 提高系统整体性能
|
|
|
+- 适合长时间运行的任务
|
|
|
+
|
|
|
+### 3. 详细描述
|
|
|
+添加了清晰的任务描述,便于:
|
|
|
+- 系统管理员了解任务用途
|
|
|
+- 日志记录和监控
|
|
|
+- 问题排查和维护
|
|
|
+
|
|
|
+## 监控建议
|
|
|
+
|
|
|
+### 1. 日志监控
|
|
|
+建议监控以下日志:
|
|
|
+- 任务执行开始和结束时间
|
|
|
+- 处理的用户数量
|
|
|
+- 活跃状态变更统计
|
|
|
+- 错误和异常情况
|
|
|
+
|
|
|
+### 2. 性能监控
|
|
|
+关注以下性能指标:
|
|
|
+- 任务执行时长
|
|
|
+- 数据库查询性能
|
|
|
+- 内存使用情况
|
|
|
+- 系统负载影响
|
|
|
+
|
|
|
+### 3. 业务监控
|
|
|
+监控业务指标:
|
|
|
+- 活跃用户比例变化
|
|
|
+- 活跃状态更新成功率
|
|
|
+- 数据一致性检查
|
|
|
+
|
|
|
+## 后续优化
|
|
|
+
|
|
|
+### 1. 批处理优化
|
|
|
+如果用户数量继续增长,可以考虑:
|
|
|
+- 调整批处理大小(当前默认1000)
|
|
|
+- 分时段执行(如分多个时间点执行)
|
|
|
+- 增加并发处理能力
|
|
|
+
|
|
|
+### 2. 缓存优化
|
|
|
+可以考虑添加缓存机制:
|
|
|
+- 缓存用户活动时间查询结果
|
|
|
+- 缓存活跃状态计算结果
|
|
|
+- 减少数据库查询压力
|
|
|
+
|
|
|
+### 3. 监控告警
|
|
|
+建议添加监控告警:
|
|
|
+- 任务执行失败告警
|
|
|
+- 执行时间过长告警
|
|
|
+- 活跃用户比例异常告警
|
|
|
+
|
|
|
+## 相关文件
|
|
|
+
|
|
|
+- `app/Module/UrsPromotion/Providers/UrsPromotionServiceProvider.php` - 定时任务配置
|
|
|
+- `app/Module/UrsPromotion/Commands/UrsUpdateActiveStatusCommand.php` - 命令实现
|
|
|
+- `app/Module/UrsPromotion/Services/UrsActiveUserService.php` - 活跃用户服务
|
|
|
+
|
|
|
+## 部署说明
|
|
|
+
|
|
|
+此更改已包含在代码中,部署后定时任务将自动生效。无需额外的配置或手动设置crontab。
|
|
|
+
|
|
|
+Laravel的定时任务通过以下方式运行:
|
|
|
+```bash
|
|
|
+# 在服务器crontab中添加(如果尚未添加)
|
|
|
+* * * * * cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1
|
|
|
+```
|
|
|
+
|
|
|
+这样Laravel会自动管理所有注册的定时任务,包括新添加的URS活跃状态更新任务。
|