乐于分享
好东西不私藏

AI聚合平台之五:设计一个企业级 Token 聚合平台OEM体系

AI聚合平台之五:设计一个企业级 Token 聚合平台OEM体系

从租户状态机、Host 租户识别、模型选品、客户等级、代充值、AI 配额池到 API Key 边界,拆一套 AI Token 聚合平台的 OEM 功能实现。

能收费上线的 OEM 体系,至少要回答这 8 个工程问题:

问题
当前实现口径
租户怎么开通和停用
Admin 显式创建、审核、暂停、恢复、终止,状态机控制入口放行
请求怎么识别租户
Host 优先,受信来源才允许 Header 备选,未知 Host 不回落平台
数据怎么隔离
Repository 显式接收 tenantID,平台数据和 OEM 数据分开查询
OEM 能卖什么模型
平台模型目录左连接租户配置,租户独立上架、下架、定价
客户怎么运营
租户内客户列表、封禁、手动调级、代充值和客户分析
折扣怎么生效
OEM 客户等级独立配置,AI PAYG 折扣只作用在按量钱包扣费
配额怎么分配
Admin 给租户发放 AI 配额池,OEM 再分配给下游客户,请求时优先扣配额
API Key 能不能代管
当前只开放客户自管,OEM 代管 Key 隐藏,等权限、审计和归属校验齐了再开

OEM 分销不是换一个入口,而是把平台能力拆成租户化的开通、选品、定价、客户、资金、配额、账本和权限边界。

这篇不讲抽象多租户概念。

我只讲我们当前这套 AI Token 聚合平台已经落地的 OEM 功能设计,以及为什么这些细节决定它能不能真正对外分销。

01 先把 OEM 拆成 4 个角色,而不是 1 个 tenant_id

tenant_id 只是数据字段。

OEM 是商业角色、权限边界和账本边界的组合。

我们当前把 OEM 体系拆成四类角色:

这四个角色最关键的差异是:

角色
可以做什么
不能做什么
平台 Admin
创建租户、审核、暂停、终止、查看平台账本和审计
不绕过审计直接代客户改业务结果
OEM Owner
管自己的客户、模型选品、客户等级、代充值、配额和经营报表
不看平台供应商凭证、全局路由策略和其他租户数据
OEM 下游客户
使用自己的 API Key、钱包、配额、账单和调用日志
不访问同租户其他客户资源
Gateway/Billing
执行租户校验、模型门禁、预算扣费和证据落账
不相信前端参数决定租户归属

这里最容易犯的错误,是把 OEM Owner 和 OEM 下游客户都当成“租户用户”。

它们不是一种角色。

Owner 是经营者。

下游客户是消费者。

经营者可以做选品、定价、代充值、客户等级和配额分配;消费者只能使用自己的 Key、钱包、额度和账单。

所以我们没有把 OEM 做成一个简单的 tenant_id 字段改造,而是把它拆成一组后台能力:

功能域
当前能力
解决的问题
租户生命周期
创建、审核、暂停、恢复、终止
防止租户被普通 CRUD 误恢复或误放行
租户入口
域名解析、Header 受信备选、状态拦截
防止未知 Host 和伪造租户 Header
商品和模型
租户商品、租户 AI 模型、租户价格
防止平台目录默认暴露给所有 OEM
客户运营
客户列表、封禁、等级、代充值
让 OEM 能独立经营下游客户
资金配额
Owner 钱包、客户钱包、AI 配额池
区分钱和用量资源
API Key
客户自管,代管暂缓
避免密钥泄露和跨客户越权
账本可见性
平台账、OEM 账、客户账分层
让经营报表有边界,底层账本可追责

这张表就是本文最核心的判断:

OEM 能不能上线,不看有没有换 Logo,而看这几条链路有没有闭环。

02 租户开通不是后台 CRUD,而是状态机

租户不是后台字典项。

如果租户管理只是普通 CRUD,会出现几类很难解释的问题:

  • 审核中的租户被直接改成 active。
  • 已终止的租户被误恢复。
  • Owner 账号被绑定到多个租户。
  • 高风险租户暂停后,API 入口还在继续调用。
  • 出问题后只看到一个状态值,看不到是谁做了动作。

所以我们把租户生命周期做成显式动作,而不是任意字段更新。

当前状态流转是:

text

create
  -> pending_review
      -> approve -> active
      -> reject  -> rejected

active
  -> suspend  -> suspended
  -> terminate -> terminated

suspended
  -> activate -> active
  -> terminate -> terminated

不同状态直接决定租户能力能不能放行:

状态
含义
当前处理口径
pending_review
已创建,待审核
不开放正式租户能力
active
正常运营
正常放行
rejected
审核拒绝
不允许通过普通状态接口恢复
suspended
暂停运营
默认拦截,只保留少量自服务维护入口
terminated
终止
不允许通过普通接口恢复

创建租户时,系统不是只插一行租户主数据。

它会同时完成几件事:

  • 校验租户编码格式和唯一性。
  • 校验 Owner 用户存在、未绑定其他 OEM、不是 Admin。
  • 要求操作人确认 Owner 绑定。
  • 初始化默认品牌配置。
  • 初始化运行配置,默认不开放 OEM 代管 API Key。
  • 初始化结算配置。
  • 把 Owner 绑定到租户。
  • 写入审计事件。

审核和状态变更也是独立动作:

text

Admin create tenant
  -> pending_review

Admin review tenant
  -> approve / reject

Admin change tenant status
  -> suspend / activate / terminate

这看起来比 CRUD 麻烦。

但它换来的东西很重要:每个状态变化都有合法来源、合法前置状态、操作人、原因和审计记录。

在 OEM 场景里,这不是“后台严谨一点”的问题,而是平台能不能控制分销风险的问题。

03 租户识别:Host 优先,未知 Host 不能自动落到平台

OEM 的入口边界从请求进来的第一秒就开始了。

我们当前的租户识别策略是:

text

1. 先用 Host 查租户域名
2. Host 没命中时,只有平台白名单 Host + 受信来源,才允许 Header 备选
3. 仍没命中时,只有平台白名单 Host 可以回落到平台租户
4. 其他未知 Host 直接返回 tenant not found
5. 命中租户后,再校验租户状态

这里有三个关键点。

第一,域名命中后不允许 Header 覆盖

如果一个请求已经从某个 OEM 域名进来,就应该以 Host 解析结果为准。否则调用方可以通过 Header 把请求切到另一个租户。

第二,未知 Host 不回落平台

很多系统早期会写一个方便逻辑:识别不到租户,就当平台入口。

在 OEM 里这很危险。

未知 Host 应该 fail-closed,而不是悄悄变成平台租户请求。

第三,缓存只是热路径,不是事实源

我们会把租户解析结果缓存成结构化数据:

text

tenant_id
tenant_code
tenant_status
domain

缓存 miss 时回源数据库,再回填缓存。

中间件最终会把可信租户信息写入请求上下文:

text

tenant_id
tenant_code
tenant_status

后面的鉴权、模型列表、API Key、计费、账单、审计,都只认这个上下文,不认前端传来的租户参数。

这就是为什么 OEM 不能只靠前端路由和页面皮肤。

租户边界必须从入口中间件开始。

04 多租户隔离:显式 tenant scope,而不是 ORM 魔法

多租户隔离不是所有表都有 tenant_id 就结束了。

真正的隔离发生在每一次查询和写入。

我们当前没有做 ORM 全局透明注入,而是继续使用显式 tenant scope:

text

Service 从可信上下文拿 tenant_id
  -> Repository 方法显式接收 tenantID
      -> tenant_id IS NULL 或 tenant_id = ? 或 Admin scope-all

原因是 AI Token 聚合平台里有三种不同查询语义:

场景
查询口径
风险控制
平台直客
tenant_id IS NULL + user_id
不误读 OEM 用户资源
OEM 下游客户
tenant_id = ? + user_id
不跨租户、不跨客户
OEM Owner 管客户
tenant_id = ? + target_user_id
目标客户必须属于当前租户
Admin 全局视角
专用 Admin scope-all
必须有 RBAC 和审计

如果用全局透明注入,短期省代码,长期会出现两个问题。

一个是 Admin 跨租户查询不好表达。

Admin 有些页面确实需要全局视角,但它必须走专用 Admin 路径、权限和审计,而不是偷偷关掉全局过滤。

另一个是平台数据和 OEM 数据不是同一种过滤。

平台直客是 tenant_id IS NULL

OEM 是 tenant_id = ?

这两个不能混在一起。

所以我们宁愿让仓储接口多传一个 tenantID,也要让每条读写路径在代码审查、测试和审计里都能看见。

这也是 OEM 文章里最容易被忽略的实现点:

隔离不是一个字段,是每条业务路径的查询语义。

05 OEM 路由能力:把 Admin、Owner、客户入口分开

当前 OEM 能力不是一个大而全的后台页面,而是一组按角色拆开的接口能力。

Admin 侧负责租户治理:

Admin 能力
作用
租户列表和详情
查租户状态、Owner、配置和经营信息
创建租户
绑定 Owner,初始化默认配置
审核租户
pending 到 active 或 rejected
状态管理
suspend、activate、terminate
租户商品和客户等级查看
平台视角辅助运营和排障
租户结算和提现审核
平台财务视角控制风险
租户配额池调整
给 OEM 发放或扣减 AI 配额资源

OEM Owner 侧负责租户经营:

OEM Owner 能力
作用
租户设置和品牌
管理站点展示和基础配置
域名绑定
建立 OEM 入口
商品选品
控制可售商品和租户价格
AI 模型选品
控制可售模型、PAYG 和 quota 策略
客户管理
列表、搜索、封禁、解封、等级、代充值
客户等级
配置折扣、AI 权益、专属 SKU 和服务等级
配额池分配
给下游客户发放和回收 AI 配额
经营报表
看客户收入、用量、排行和结算数据

客户侧只拥有自己的资源:

客户能力
作用
自己的 API Key
创建、查看掩码、启停、配置 allowed models
自己的钱包
充值、消费、账单
自己的 AI 配额
查看可用额度和消耗
自己的调用日志
排查请求和账单

这套拆法的好处是:

  • Admin 不需要进入 OEM 日常运营细节。
  • OEM Owner 不接触平台供应商和底层成本。
  • 下游客户不接触 OEM 后台经营信息。
  • Gateway 和 Billing 始终从租户上下文、用户身份和 Key 归属执行校验。

OEM 不是把所有按钮塞进一个后台。

它是把“平台治理、租户经营、客户使用、网关执行”这四层分清楚。

06 AI 模型选品:平台模型目录不等于租户可售目录

AI Token 聚合平台做 OEM 时,模型选品是最核心的商业能力之一。

平台有某个模型,不代表所有 OEM 都应该能卖这个模型。

我们当前把模型拆成两层:

text

平台 active 模型目录
  -> OEM 租户模型配置
      -> 上架 / 下架
      -> allow_payg
      -> quota_enabled
      -> 租户级价格
          -> 终端模型列表
          -> Playground
          -> OpenAI-compatible /v1/models
          -> API Key allowed_models
          -> Gateway 调用前模型门禁

OEM 管理页返回的不是“租户已经配置过的模型列表”。

而是:

text

平台 active 模型目录
  left join
租户模型配置

这样一行模型里可以同时看到:

  • 平台模型信息。
  • 平台参考价格。
  • 当前租户是否已选择。
  • 当前租户价格。
  • PAYG 是否允许。
  • Quota 是否允许。
  • 当前租户状态。

为什么要这么做?

如果只返回已配置模型,OEM 就看不到还有哪些平台模型可以上架,也没法做批量上架、下架和定价。

更重要的是,模型列表页不是最终门禁。

真正调用时,Gateway 还会按 tenant_id + model_code 再查租户模型配置:

状态
Gateway 行为
租户未上架
拒绝
租户已下架
拒绝
PAYG 关闭且 quota 未开启
拒绝
PAYG 开启但必要价格缺失
拒绝
上架且价格完整
使用租户价格参与预估、扣费和 usage log

这里最关键的是价格门禁。

PAYG 模型必须配置完整的租户价格:

模型类型
必要价格
Chat / Embedding / Responses
input + output
Image
per image
Audio transcription
per second
TTS
per char

价格字段全部按 decimal 处理,前端以字符串传输。

不允许用 float。

也不允许出现“模型能调用,但价格缺失导致免费打上游”的半可用状态。

模型选品不是展示功能,它是 Gateway 计费门禁的一部分。

07 客户等级:OEM 自己的等级,不复用平台会员等级

OEM 下游客户不是平台直客的子集。

他们有自己的等级、折扣、权益和运营策略。

我们当前的客户等级能力包括:

能力
当前实现口径
等级管理
OEM 在租户内创建、编辑、删除等级
唯一性
level_code
 只要求同一租户内唯一
调级方式
由 OEM 后台手动调级,不做自动升级
商品折扣
用于租户商品和 SKU VIP 价
AI 折扣
ai_discount_rate
 用于 AI PAYG 钱包扣费
专属 SKU
控制部分商品可见和权益
服务等级
用于客服和运营分层

这里有一个非常重要的边界:

AI PAYG 折扣不回退到商品折扣。

商品折扣和 AI 按量扣费是两种不同的账。

商品折扣影响 SKU、套餐、订单价。

AI PAYG 折扣只影响钱包按量扣费部分。

它不影响已经分配的 AI 配额消耗,也不应该和商品折扣混用。

Gateway 构建路由上下文时,会按当前用户和租户查客户等级:

text

tenant_id > 0
  -> OEM customer level

tenant_id = 0
  -> platform user level

这让平台直客等级和 OEM 客户等级在运行时分开。

同名 VIP 等级也不会互相污染。

如果不拆这层,后面会出现很典型的账单争议:

text

为什么平台 VIP 折扣影响了 OEM 客户?
为什么 A 租户的 Enterprise 等级影响了 B 租户?
为什么商品折扣被拿去算 AI 按量账单?

所以客户等级不是运营后台的小功能。

它是 OEM 计费解释能力的一部分。

08 客户管理:封禁、调级、代充值都必须带租户边界

OEM Owner 管客户,不能只是“用户列表加筛选”。

当前客户管理至少覆盖四条链路:

能力
当前实现口径
客户列表
只查当前租户下用户,支持关键字、状态、分页
封禁 / 解封
使用用户域统一状态
手动调级
目标等级必须属于当前租户
代充值
从 OEM 操作人钱包转到目标客户钱包

封禁这件事尤其容易做错。

很多后台只改客户列表里的状态,但登录、下单、支付、API 调用链路没有统一识别。

这样客户被封禁后,仍然可能用旧会话继续下单,或者继续支付已创建订单。

我们的口径是:

text

客户封禁
  -> 用户域状态变为 banned
      -> 登录链路识别
      -> 订单创建链路识别
      -> 支付链路再次识别
      -> API 使用链路继续受 tenant/user 状态约束

代充值也不是“直接把客户余额加大”。

它是一笔同租户内的钱包转账:

text

OEM operator wallet
  -> wallet transfer
      -> OEM customer wallet

当前代充值链路会做这些校验:

  • 金额必须为正。
  • 租户 ID、操作人 ID、目标客户 ID 必须有效。
  • 目标客户必须属于当前租户。
  • 操作人不能给自己代充值。
  • 钱包扣减和入账在同一事务里完成。
  • 写钱包流水。
  • 写审计事件。

这几个细节决定了代充值是不是一笔能解释的资金动作。

如果只是直接改余额,后面客户问“谁充的、从哪里扣的、为什么多了一笔钱”,平台很难给出证据。

09 钱包额度和 AI 配额池必须分开

OEM 体系里,“额度”这个词最容易混。

我们当前强制拆成两类:

text

钱包余额
  钱,用于充值、代充值和 PAYG 钱包扣费

AI 配额池
  用量资源,用于平台给租户发放,再由租户分配给下游客户

两条链路分别是:

text

Admin 发放 OEM 钱包额度
  -> OEM Owner wallet
      -> 代充值 transfer
          -> OEM customer wallet

Admin 发放 AI tenant quota pool
  -> tenant_quota_pools
      -> tenant_quota_allocations
          -> AI 请求优先扣配额

钱包余额解决的是资金。

AI 配额池解决的是用量资源。

它们不能放进同一张账里。

当前 AI 配额池有三张核心账:

对象
作用
tenant_quota_pools
租户总配额池,记录总量、已分配、已使用
tenant_quota_allocations
OEM 分配给下游客户的配额
tenant_quota_ledger
发放、分配、回收、扣减、恢复的流水证据

配额链路有几个硬约束:

  • 发放、分配、回收、扣减都有幂等键。
  • 配额池可分配量 = 总量 - 已分配量。
  • 客户可回收量 = 已分配量 - 已使用量。
  • 分配前校验目标客户属于当前租户。
  • 扣减时锁定 allocation 和 pool,防止并发超扣。
  • 单次 AI 消耗可以跨多个 allocation 扣减。
  • usage log 或后续落账失败时,可以按扣减明细恢复配额。

请求进入 AI 网关时,如果结算策略要求 quota allocation,配额不足就直接拒绝,而不是悄悄兜底钱包。

这个设计看起来保守,但它避免了一类很难解释的问题:

text

客户以为自己买的是配额
平台发现配额不够后自动扣了钱包
OEM 和客户都认为账单口径变了

所以配额模式要么明确 fallback 策略,要么 fail-closed。

不能靠隐式兜底解决。

10 API Key 代管:当前隐藏,不半开放

OEM 代管下游客户 API Key 是一个很有诱惑力的功能。

渠道商会希望能替客户:

  • 创建 Key。
  • 禁用 Key。
  • 设置模型白名单。
  • 设置 spend limit。
  • 重置 Key。
  • 查看客户 Key 状态。

但这个能力不能半开放。

当前我们的边界是:客户 API Key 自管,OEM 代管 Key 隐藏。

也就是:

  • 当前登录用户只能管理自己的 Key。
  • Key 明文只在创建时返回一次。
  • 列表只返回 masked key。
  • Gateway 按 Key 绑定的 tenant/user 计费。
  • 请求体里伪造目标客户不会改变 Key 归属。
  • 不提供 /tenant/customers/:id/api-keys 这类 OEM 代管入口。

为什么不先做一个简单版?

因为代管 Key 一旦开放,至少要补齐 6 个条件:

条件
必须解决的问题
目标客户归属校验
防止 OEM 操作其他租户客户
操作人权限和租户开关
防止普通成员越权代管
明文只创建时返回
防止后台长期查看密钥
allowed_models 校验
防止 Key 绕过租户模型选品
spend limit 校验
防止 Key 绕过预算策略
全量审计
追踪谁替哪个客户做了什么

这里的核心不是“能不能创建 Key”。

而是:

text

谁有权替谁创建?
创建后费用归谁?
客户能不能知道这件事?
泄露后责任怎么追?
审计里能不能还原动作?

在这些条件没有完整闭环之前,隐藏比半开放更稳。

这也是 OEM MVP 里很重要的产品判断:不是所有“渠道商想要”的能力都应该第一版开放。

高风险能力必须等权限、审计、密钥展示和计费边界齐了再开。

11 账本可见性:OEM 要经营报表,不等于看平台全部账

OEM 需要看经营结果。

但经营结果不等于平台全局账本。

当前可见性拆成三层:

视角
可以看
不该看
OEM Owner
下游客户收入、调用量、模型分布、客户排行、租户结算
平台供应商凭证、全局上游成本、其他租户数据
OEM 下游客户
自己的 API Key、用量、账单、钱包、配额
同租户其他客户数据、OEM 后台利润
平台 Admin
全局账本、上游成本、风控和审计
明文 API Key、绕过审计的代入操作

这和前面计费引擎文章里的结论一致:

客户最终账本以平台的 usage log、charge line、钱包流水和 quota ledger 为准。

但展示给不同角色时必须裁剪。

OEM 看板应该服务经营:

  • 客户收入。
  • 请求量。
  • Token 用量。
  • 模型分布。
  • Top 客户。
  • 客户趋势。
  • 结算和提现。

它不应该把平台内部的供应商凭证、合同成本、全局路由策略直接暴露出来。

否则 OEM 很快会从经营后台变成平台内部成本后台。

这会带来两个问题:

第一,平台商业空间被暴露。

第二,供应商和全局成本数据变成新的越权面。

所以 OEM 报表要能解释客户账单,但不能泄露平台底层账本。

12 当前 OEM 功能实现清单

下面这张表是当前这套 OEM 体系可以拿去做技术评审的实现清单。

能力域
当前已落地的关键点
上线判断
租户创建
租户编码唯一、Owner 绑定、默认品牌配置、默认运行配置、结算配置
不是裸 CRUD
租户审核
pending_review 到 active / rejected,拒绝必须有原因
可追责
租户状态
active、suspended、terminated 显式动作流转
高风险租户可停用
租户入口
Host 优先,受信 Header 备选,未知 Host fail-closed
入口可信
租户上下文
注入 tenant_id、tenant_code、tenant_status
后续链路统一取信
数据隔离
显式 tenant scope,平台 NULL tenant 和 OEM tenant 分开
可测试、可审计
Admin 边界
Admin 专用 scope-all、RBAC、审计
不靠普通接口越权
模型选品
平台目录左连接租户配置
OEM 可独立上架
模型定价
租户级 input/output/image/audio/TTS 价格
可独立售卖
PAYG 门禁
价格不完整时拒绝列表展示和调用
防免费打上游
模型列表
终端模型、Playground、OpenAI-compatible 模型列表受租户配置约束
展示和调用一致
API Key 白名单
allowed_models 写入前校验租户可售模型
Key 不绕过选品
客户列表
只查当前租户客户,支持筛选和分页
不跨租户
客户封禁
登录、下单、支付链路识别 banned
封禁真正生效
客户等级
租户内唯一,手动调级
等级不串租户
AI 折扣
AI PAYG 折扣独立于商品折扣
账单可解释
代充值
同租户钱包转账,不直接改余额
资金可追踪
Owner 钱包
Admin 发放钱包额度给租户 Owner
钱包和配额分离
AI 配额池
pool / allocation / ledger 三层账
用量资源可分配
配额幂等
发放、分配、回收、扣减、恢复都有幂等和事务锁
防重复和并发
配额扣减
AI 请求优先扣租户分配额度,失败可恢复
账实一致
API Key 自管
当前用户只能管自己的 Key,明文只返回一次
MVP 风险可控
API Key 代管
OEM 代管隐藏,等权限、审计、归属校验齐再开
不半开放高风险能力
可见性裁剪
OEM 看经营数据,平台保留底层账本
不泄露平台成本

这张表比“有没有白标页面”更适合判断 OEM 能不能上线。

只要其中几项没有收口,后面大概率会在这几类问题里付成本:

  • 跨租户越权。
  • 客户串价。
  • 模型免费调用。
  • 代充值对不上账。
  • 配额并发超扣。
  • API Key 代管泄露。
  • OEM 报表暴露平台成本。

13 常见错误方案

错误一:把 OEM 做成一套白标前端

白标前端只能解决“看起来像谁”的问题。

OEM 要解决的是:谁能卖什么、谁能改什么、钱怎么走、账怎么看、出事后谁负责。

错误二:公开请求靠参数传 tenant_id

租户归属必须来自可信 Host、认证上下文或受信内部入口。

如果公开请求可以靠前端参数决定租户,后面的鉴权、计费和账本都会建立在不可信输入上。

错误三:平台模型默认给所有 OEM 可售

平台模型目录不等于租户可售目录。

OEM 必须独立控制模型上架、下架、价格、PAYG 和 quota 策略。

错误四:平台等级和 OEM 客户等级混用

平台直客等级属于平台。

OEM 客户等级属于租户。

混用会导致权益串租户,折扣账单也解释不清。

错误五:代充值直接改客户余额

代充值必须是一笔钱包转账。

它要有扣款方、收款方、金额、事务、流水、审计和失败处理。

错误六:把钱包额度和 AI 配额池叫成一个东西

钱包是钱。

AI 配额池是用量资源。

它们可以共同参与扣费策略,但不能混成同一张账。

错误七:提前开放 OEM 代管 API Key

没有目标客户归属校验、masked key、审计、模型白名单和 spend limit 校验时,代管 Key 是高风险能力。

先隐藏,比半开放更稳。

错误八:OEM 看板直接展示平台上游成本

OEM 需要经营分析,不等于可以看平台全部成本和供应商信息。

平台账、OEM 账、客户账要分层。

14 最后

OEM 分销不是换 Logo。

它是一套完整的租户化经营系统:

text

入口要可信
数据要隔离
模型要选品
价格要完整
客户要能运营
资金要能追踪
配额要能恢复
Key 要有边界
账本要分视角

做 AI Token 聚合平台时,OEM 是一个很自然的商业扩展方向。

但它不是前端项目,也不是一个字段改造。

它要求平台把网关、模型、计费、钱包、配额、账本和权限都变成租户化能力。

下一篇我会继续拆平台高可用和 LLM 渠道高可用设计:

为什么 Token 聚合平台不能只靠单实例网关和单渠道 provider,而要同时设计网关无状态、预算预留幂等、渠道健康检查、自动降级、Fallback 和对账证据。

这个系列会继续围绕企业级 Token 聚合平台,把网关、路由、计费、对账、OEM 和上线门禁拆成可以复用的工程清单。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-07 01:30:13 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/743229.html
  2. 运行时间 : 0.154517s [ 吞吐率:6.47req/s ] 内存消耗:4,889.39kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=7021a5d65506c3e377fab0a15875778b
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 4.22 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.11 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000904s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001202s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000534s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000513s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000987s ]
  6. SELECT * FROM `set` [ RunTime:0.000417s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001089s ]
  8. SELECT * FROM `article` WHERE `id` = 743229 LIMIT 1 [ RunTime:0.000989s ]
  9. UPDATE `article` SET `lasttime` = 1786037413 WHERE `id` = 743229 [ RunTime:0.002322s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000447s ]
  11. SELECT * FROM `article` WHERE `id` < 743229 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000854s ]
  12. SELECT * FROM `article` WHERE `id` > 743229 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000775s ]
  13. SELECT * FROM `article` WHERE `id` < 743229 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001284s ]
  14. SELECT * FROM `article` WHERE `id` < 743229 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001188s ]
  15. SELECT * FROM `article` WHERE `id` < 743229 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001606s ]
0.157399s