时间: 2025年07月05日 03:57
任务: 为UrsUpdateActiveStatusCommand添加任务调度,设置在每日1:05执行,后台运行
状态: ✅ 已完成
文件: app/Module/UrsPromotion/Providers/UrsPromotionServiceProvider.php
在现有的定时任务配置中添加了URS用户活跃状态更新任务:
// 每天01:05执行用户活跃状态更新
$schedule->command('urs:update-active-status')
->dailyAt('01:05')
->description('URS用户活跃状态更新 - 基于最近15天活动时间更新用户活跃状态')
->withoutOverlapping() // 防止重复执行
->runInBackground(); // 后台运行
php artisan urs:update-active-statuswithoutOverlapping() - 防止任务重复执行runInBackground() - 任务在后台执行,不阻塞其他任务当前URS模块的定时任务时间安排:
这样的时间安排确保:
通过 php artisan schedule:list 命令验证,任务已成功注册:
5 1 * * * php artisan urs:update-active-status ....... Next Due: 21小时后
使用 --dry-run 模式测试命令功能:
php artisan urs:update-active-status --dry-run
测试结果:
命令运行正常,统计信息准确。
使用 withoutOverlapping() 确保同一时间只有一个活跃状态更新任务在运行,避免:
使用 runInBackground() 确保任务在后台执行,特点:
添加了清晰的任务描述,便于:
建议监控以下日志:
关注以下性能指标:
监控业务指标:
如果用户数量继续增长,可以考虑:
可以考虑添加缓存机制:
建议添加监控告警:
app/Module/UrsPromotion/Providers/UrsPromotionServiceProvider.php - 定时任务配置app/Module/UrsPromotion/Commands/UrsUpdateActiveStatusCommand.php - 命令实现app/Module/UrsPromotion/Services/UrsActiveUserService.php - 活跃用户服务此更改已包含在代码中,部署后定时任务将自动生效。无需额外的配置或手动设置crontab。
Laravel的定时任务通过以下方式运行:
# 在服务器crontab中添加(如果尚未添加)
* * * * * cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1
这样Laravel会自动管理所有注册的定时任务,包括新添加的URS活跃状态更新任务。