| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- <?php
- namespace crmeb\jobs;
- use crmeb\interfaces\JobInterface;
- use think\facade\Log;
- class SharedProsperityUserLevelUpgradeJob implements JobInterface
- {
- public function fire($job, $data)
- {
- // 1. 这里是任务执行的业务逻辑
- Log::error('SharedProsperityUserLevelUpgradeJob:' . json_encode($data));
- $uid = $data['uid'] ?? 0;
- if (!$uid) {
- // 数据无效,直接删除任务
- $job->delete();
- return;
- }
- try {
- // 例如: (new UserLevelService())->upgradeByConsume($uid);
- // 2. 业务逻辑执行成功后,务必删除任务,防止任务重复执行
- $job->delete();
- // 可以记录日志:info("用户升级任务执行成功: " . $uid);
- } catch (\Throwable $e) {
- // 3. 执行失败的处理
- // 如果重试次数超过3次,则删除任务并记录错误日志
- if ($job->attempts() > 3) {
- $job->delete();
- // 记录错误日志:error("用户升级任务最终失败: " . $uid . ", 错误:" . $e->getMessage());
- } else {
- // 否则,延迟 10 秒后重新执行
- $job->release(10);
- }
- }
- }
- public function failed($data)
- {
- // 记录失败日志
- // error("用户升级任务失败: ", $data);
- }
- }
|