Переглянути джерело

fix(wechat): 刷新小程序 AccessToken 时添加异常处理

- 在刷新 AccessToken 时添加 try-finally 块以确保状态正确重置
- 防止因异常导致 isRunning 状态未释放的问题
- 保证缓存过期时间正确返回
runphp 4 місяців тому
батько
коміт
52bdce3e7d
1 змінених файлів з 11 додано та 8 видалено
  1. 11 8
      src/Cron/AccessTokenCron.php

+ 11 - 8
src/Cron/AccessTokenCron.php

@@ -48,14 +48,17 @@ class AccessTokenCron extends BaseJob
             return Cache::ttl($this->cacheKey);
         }
         $this->isRunning = true;
-        $oldToken = $this->accessToken->getToken();
-        $newToken = $this->accessToken->refresh();
-        $expireIn = Cache::ttl($this->cacheKey);
-        Log::debug('刷新小程序 AccessToken 成功,过期时间:{time}, 结果:{result}', [
-            'time' => date('Y-m-d H:i:s', time() + $expireIn),
-            'result' => $oldToken === $newToken ? '未更新' : '已更新',
-        ]);
-        $this->isRunning = false;
+        try {
+            $oldToken = $this->accessToken->getToken();
+            $newToken = $this->accessToken->refresh();
+            $expireIn = Cache::ttl($this->cacheKey);
+            Log::debug('刷新小程序 AccessToken 成功,过期时间:{time}, 结果:{result}', [
+                'time' => date('Y-m-d H:i:s', time() + $expireIn),
+                'result' => $oldToken === $newToken ? '未更新' : '已更新',
+            ]);
+        } finally {
+            $this->isRunning = false;
+        }
         return $expireIn;
     }
 }