SharedProsperityUserLevelUpgradeJob.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace crmeb\jobs;
  3. use crmeb\interfaces\JobInterface;
  4. use think\facade\Log;
  5. class SharedProsperityUserLevelUpgradeJob implements JobInterface
  6. {
  7. public function fire($job, $data)
  8. {
  9. // 1. 这里是任务执行的业务逻辑
  10. Log::error('SharedProsperityUserLevelUpgradeJob:' . json_encode($data));
  11. $uid = $data['uid'] ?? 0;
  12. if (!$uid) {
  13. // 数据无效,直接删除任务
  14. $job->delete();
  15. return;
  16. }
  17. try {
  18. // 例如: (new UserLevelService())->upgradeByConsume($uid);
  19. // 2. 业务逻辑执行成功后,务必删除任务,防止任务重复执行
  20. $job->delete();
  21. // 可以记录日志:info("用户升级任务执行成功: " . $uid);
  22. } catch (\Throwable $e) {
  23. // 3. 执行失败的处理
  24. // 如果重试次数超过3次,则删除任务并记录错误日志
  25. if ($job->attempts() > 3) {
  26. $job->delete();
  27. // 记录错误日志:error("用户升级任务最终失败: " . $uid . ", 错误:" . $e->getMessage());
  28. } else {
  29. // 否则,延迟 10 秒后重新执行
  30. $job->release(10);
  31. }
  32. }
  33. }
  34. public function failed($data)
  35. {
  36. // 记录失败日志
  37. // error("用户升级任务失败: ", $data);
  38. }
  39. }