Skip to content

perf: 优化 API 并发、缓存与容器运行性能#67

Open
WangBen137 wants to merge 3 commits into
coolxi-tech:mainfrom
WangBen137:perf/project-optimization
Open

perf: 优化 API 并发、缓存与容器运行性能#67
WangBen137 wants to merge 3 commits into
coolxi-tech:mainfrom
WangBen137:perf/project-optimization

Conversation

@WangBen137

@WangBen137 WangBen137 commented Jul 22, 2026

Copy link
Copy Markdown

变更说明

本 PR 针对项目中聚合接口请求串行、公共数据重复拉取以及容器运行时配置不足的问题进行优化。在保持现有路由和响应结构不变的前提下,降低接口延迟、减少上游请求次数,并提升异常情况下的稳定性。

主要改动

并发请求优化

  • Game::record() 的 10 个独立上游请求改为批量并发执行,最大并发数为 5。
  • Game::player() 的角色资料与三类货币请求改为并行执行。
  • /game/pricerecent=1 时的历史价格请求改为批量并发执行。
  • 新增统一的批量请求处理方法,集中处理成功结果和请求异常。

缓存优化

  • /game/config 增加 300 秒缓存。
  • 根据查询参数为 /game/items 增加 300 秒缓存。
  • Tools 控制器依赖的物品集合增加 3600 秒缓存,降低控制器初始化开销。

稳定性优化

  • 为 Guzzle HTTP 客户端增加 3 秒连接超时和 12 秒总请求超时。
  • 批量请求中任一上游请求失败时统一抛出异常,避免静默返回不完整数据。
  • 保留现有接口参数、路由和响应格式,减少兼容性影响。

Docker 优化

  • 增加 cURL、SQLite PDO 和 OPcache 扩展。
  • 为 CLI 模式启用并配置 OPcache。
  • 清理 APT 软件包索引,减小最终镜像体积。

文档

  • 新增 CHANGELOG.md,记录本次性能、稳定性和部署相关变更,并补充近期版本历史。

性能验证

以下为本地环境测试结果,仅供参考:

接口 首次请求 缓存命中 提升
/game/config 约 484 ms 约 3.19 ms 约 152 倍
/game/items 约 416 ms 约 7 ms 约 59 倍

5 并发测试结果:

  • /game/config:约 166 req/s,0 失败。
  • /game/items:约 179 req/s,0 失败。

验证情况

  • PHP 语法检查通过。
  • Composer 配置校验通过(仓库现有 composer.lock 不同步警告除外)。
  • ThinkPHP 路由表正常生成。
  • 本地服务根接口返回 HTTP 200。
  • 本地与远程分支提交已核对一致。

兼容性说明

  • 未修改现有 API 路由。
  • 未修改现有响应数据结构。
  • 缓存使用 ThinkPHP 现有缓存组件,无需增加新的应用层依赖。

##声明:本次PR使用ai辅助编写

@WangBen137
WangBen137 marked this pull request as ready for review July 23, 2026 08:36
@coolxitech

Copy link
Copy Markdown
Collaborator

changelog的markdown需要删一下

@WangBen137

Copy link
Copy Markdown
Author

好的,正在处理
稍等一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants