乐于分享
好东西不私藏

AI 出口限制下,应用后端如何降低模型供应风险

AI 出口限制下,应用后端如何降低模型供应风险

AI 出口限制下,应用后端如何降低模型供应风险

  最近围绕「Anthropic Faces Questions over AI Export Ban Influence」的讨论,对后端团队来说不应被处理成一条八卦新闻。工程师真正需要追问的是:如果某个模型供应商、某个区域、某类模型能力突然受限,你的 AI 应用还能不能继续稳定服务用户?

  这类风险不只来自出口管制。供应商服务条款变化、区域访问策略调整、账号风控、模型下线、价格变化、企业客户的数据处理要求收紧,甚至高峰期容量不足,都会让一个看似正常的 AI 功能突然不可用。

  最危险的状态不是选择了哪一家模型,而是把产品流程、权限判断、提示词格式、响应解析、计费逻辑和重试策略全部写死在某一家供应商接口上。本文不讨论新闻真伪,也不假设某家公司做了什么。我们把它当成一个工程信号:AI 应用需要把「模型能力」从「业务系统」里拆出来,并用可配置、可审计、可降级的方式管理。

  核心判断很简单:模型供应商应该是可替换依赖,不应该成为业务系统里的隐式基础设施。

场景:客服总结功能突然不能调用主模型

  假设你负责一个面向海外客户的 SaaS 后端,其中有一个 AI 客服总结功能。业务流程是:用户提交工单,系统拉取最近 20 条对话,调用大模型生成问题摘要、情绪标签、下一步建议,然后写回工单系统。

  最初实现通常很直接:

ts
asyncfunctionsummarizeTicket(ticketIdstring) {
const messages = awaitloadMessages(ticketId);
const prompt = buildPrompt(messages);

const result = await anthropic.messages.create({
model"provider-specific-model",
max_tokens800,
messages: [{ role"user"content: prompt }]
  });

returnparseSummary(result);
}

  这个版本上线快,但风险也集中。

问题
具体表现
故障后果
供应商写死
业务代码直接调用某家 SDK
区域受限或账号异常时功能整体失败
提示词写死
prompt 绑定某家模型的角色、工具或 JSON 能力
切换模型后输出质量不可控
解析逻辑写死
依赖供应商原始返回结构
响应字段变化会导致解析失败
合规判断缺位
调用前不判断区域、租户、数据等级
出错后才发现请求不该发出
重试无边界
所有失败都按网络故障重试
成本放大、队列堆积、用户等待变长

  在出口限制、区域访问变化或供应商策略变化的背景下,这种实现的失败模式很清楚:请求失败率上升,重试放大成本,异步队列堆积,客服页面长时间等待,最后业务方只看到「AI 功能不稳定」。但真正的问题在架构边界,而不是某一次 API 调用。

把模型调用拆成四层

  降低供应风险的第一步不是立刻接入十个模型,而是先把模型调用拆出清晰边界。一个可维护的 AI 后端至少应该区分四层:能力层、策略层、路由层、适配器层。

层次
负责什么
输入
输出
常见失败模式
能力层
描述业务需要什么模型能力
摘要、分类、检索问答、代码生成
标准化任务请求
任务定义过粗,无法降级
策略层
判断是否允许调用某类模型
租户、区域、数据等级、用途
allow、deny、fallback
规则散落在业务代码里
路由层
选择具体供应商和模型
能力需求、策略结果、健康状态
provider、model、参数
只按默认模型路由
适配器层
屏蔽供应商 API 差异
标准请求对象
标准响应对象
返回结构不统一,解析脆弱

  这四层的价值在于:业务代码只描述「我要完成什么任务」,不直接关心「调用哪家模型」。合规策略可以独立变更,供应商切换可以通过配置完成,失败时也能按能力等级降级。

  内部接口契约可以先设计成这样:

ts
typeAiTask = "ticket_summary" | "risk_classification" | "semantic_search_answer";
typeDataClass = "public" | "internal" | "confidential" | "regulated";

typeAiRequest = {
taskAiTask;
tenantIdstring;
userRegionstring;
dataClassDataClass;
inputunknown;
latencyBudgetMsnumber;
requireStructuredOutputboolean;
};

typeAiResponse<T> = {
providerstring;
modelstring;
degradedboolean;
output: T;
usage?: {
inputTokensnumber;
outputTokensnumber;
  };
};

  注意这里没有暴露供应商原生参数。业务侧传入的是任务、区域、数据等级、延迟预算和结构化输出要求。模型路由器再根据这些信息选择供应商。这样会多一层代码,但换来的是可控性、可审计性和迁移空间。

策略层要表达合规和业务边界

  很多团队把 AI 调用当成普通第三方 API,只在网关层做鉴权。这不够。AI 请求有几个特殊点:输入可能包含敏感数据,输出可能参与业务决策,模型供应商可能有区域和用途限制,不同租户可能签了不同的数据处理协议。

  策略层应该在调用前完成判断,而不是等供应商返回错误。一个实用配置可以从 YAML 开始:

yaml
ai_policy:
default_action:deny
rules:
-name:public_summary_global
when:
task:ticket_summary
data_class:public
allow_providers: [provider_aprovider_b]
require_audit:true

-name:regulated_data_restricted
when:
data_class:regulated
allow_providers: [private_model]
require_audit:true
require_redaction:true

-name:eu_confidential_summary
when:
task:ticket_summary
user_region:EU
data_class:confidential
allow_providers: [provider_b]
require_audit:true

  这个配置不是法律意见,也不能替代合规审查。它的工程意义是把分散在代码里的判断收敛成可审计规则。每次策略变更都可以被代码评审、灰度发布、记录版本,并在事故复盘时还原当时的判断依据。

  策略判断的输入和输出要明确:

项目
内容
输入
租户 ID、用户区域、数据类别、任务类型、调用目的、是否持久化、是否进入日志
处理
规则匹配、冲突解决、默认动作、策略版本记录
输出
允许的供应商集合、是否脱敏、是否审计、是否拒绝、拒绝原因
失败模式
规则缺失、默认放行、区域识别错误、数据分类不准、策略版本不可追溯
观测信号
策略命中率、拒绝率、fallback 率、未知区域占比、规则版本分布

  策略函数可以保持简单,但默认值必须保守:

ts
functionevaluatePolicy(reqAiRequestpolicyPolicy): PolicyDecision {
const matched = policy.rules.filter(rule =>match(rule.when, req));

if (matched.length === 0) {
return { action"deny"reason"no_matching_policy" };
  }

const providers = intersectAll(matched.map(r => r.allowProviders));
if (providers.length === 0) {
return { action"deny"reason"provider_set_empty" };
  }

return {
action"allow",
    providers,
requireAudit: matched.some(r => r.requireAudit),
requireRedaction: matched.some(r => r.requireRedaction)
  };
}

  关键点是默认拒绝,而不是默认放行。对于 AI 应用,这个保守默认值更容易解释,也更容易通过企业客户的安全审查。

路由器要按能力退化

  多模型接入的常见误区是「主供应商失败就切备用供应商」。这只能解决连通性问题,不能解决能力差异问题。一个模型可能擅长长上下文摘要,另一个模型可能结构化输出更稳定,还有一个模型便宜但推理能力较弱。如果路由器只按供应商健康状态切换,降级后的质量可能不可控。

  更好的做法是先定义任务能力要求,再定义可接受的退化路径。

任务
首选能力
可接受降级
不可接受降级
客服总结
长上下文、稳定 JSON
缩短上下文,只输出摘要和标签
输出自由文本后直接写库
风险分类
低温度、固定标签
转人工复核
模型自由生成风险等级
检索问答
引用来源、拒答能力
只返回检索片段
无引用直接回答
代码生成
工具调用、上下文窗口
只生成片段
自动提交未验证代码

  路由器可以维护一份模型能力表:

json
{
"models":[
{
"provider":"provider_a",
"model":"large-general",
"capabilities":["long_context","json_output","tool_use"],
"regions":["US","SG"],
"maxLatencyMs":6000,
"costLevel":"high"
},
{
"provider":"provider_b",
"model":"balanced-chat",
"capabilities":["json_output"],
"regions":["EU","US"],
"maxLatencyMs":4000,
"costLevel":"medium"
},
{
"provider":"private_model",
"model":"internal-small",
"capabilities":["classification"],
"regions":["private"],
"maxLatencyMs":2000,
"costLevel":"fixed"
}
]
}

  模型选择过程应该同时看策略结果、能力匹配、健康状态、成本和延迟预算:

ts
asyncfunctionroute(reqAiRequest): Promise<RouteDecision> {
const policyDecision = evaluatePolicy(req, currentPolicy);
if (policyDecision.action === "deny") {
thrownewAiPolicyError(policyDecision.reason);
  }

const candidates = modelRegistry
    .filter(m => policyDecision.providers.includes(m.provider))
    .filter(m =>supportsTask(m, req.task))
    .filter(m =>supportsRegion(m, req.userRegion))
    .filter(m => healthStore.isHealthy(m.provider, m.model));

const ranked = rankByCapabilityAndBudget(candidates, req);
if (ranked.length === 0) {
returnbuildFallbackDecision(req, policyDecision);
  }

return {
provider: ranked[0].provider,
model: ranked[0].model,
degraded: ranked[0].degradeLevel > 0,
redactionRequired: policyDecision.requireRedaction
  };
}

  这段逻辑的重点不是排序算法多复杂,而是把选择过程显式化。上线后你应该能回答:某个请求为什么选了这个模型?为什么没有走另一个供应商?降级是不是符合任务定义?

  下面这张流程图说明了一次 AI 请求从业务入口到模型调用的主要边界。

适配器要标准化结构化输出

  供应商适配器的职责不是简单转发 HTTP 请求,而是把不同模型的差异收束到内部契约里。对于后端系统,最重要的是结构化输出稳定性。

  以客服总结为例,不要让模型自由返回一段文本后再靠正则解析。应该先定义输出契约:

ts
typeTicketSummary = {
summarystring;
sentiment"positive" | "neutral" | "negative";
nextAction"reply" | "refund_review" | "escalate" | "close";
confidencenumber;
evidenceMessageIdsstring[];
};

  提示词也要围绕契约设计:

text
你是客服工单分析助手。请只输出 JSON,不要输出 Markdown。
字段要求:
- summary: 80 字以内中文摘要
- sentiment: positive、neutral、negative 三选一
- nextAction: reply、refund_review、escalate、close 四选一
- confidence: 0 到 1 的数字
- evidenceMessageIds: 支撑判断的消息 ID 数组

如果信息不足,请降低 confidence,不要编造事实。

  适配器拿到模型结果后,至少做三类校验:

校验项
判断标准
失败处理
JSON 与 schema
字段存在、类型正确、必填项完整
一次修复提示,仍失败则降级或人工处理
枚举值
只能取业务状态机允许值
映射到允许值或拒绝写入
证据与置信度
证据 ID 来自输入,低置信度不自动推进流程
转人工复核或只保存摘要

  失败类型也要标准化:

ts
typeAiErrorCode =
  | "POLICY_DENIED"
  | "NO_AVAILABLE_MODEL"
  | "PROVIDER_TIMEOUT"
  | "RATE_LIMITED"
  | "INVALID_MODEL_OUTPUT"
  | "SAFETY_BLOCKED";

  这样业务系统才能做明确处理。POLICY_DENIED 应该走非 AI 流程,PROVIDER_TIMEOUT 可以短暂重试,INVALID_MODEL_OUTPUT 可以切换更稳定的结构化模型,SAFETY_BLOCKED 需要记录审计并提示人工处理。

可观测性要区分模型成功和业务可用

  AI 调用的监控不能只看 HTTP 200。模型响应成功,不代表业务结果可用;模型降级成功,也不代表用户体验无损。建议至少建立三类指标。

问题
指标
维度
用途
能不能用
成功率、超时率、限流率、拒绝率
provider、model、region、tenant
判断供应商和区域风险
用得好不好
schema 通过率、人工改写率、低置信度占比
task、model、prompt_version
判断输出质量
成本是否失控
token 数、单请求成本、重试次数、降级比例
task、tenant、model
控制预算和异常流量

  日志里不要记录原始敏感输入,至少要做字段级脱敏或摘要化。一个可用的审计事件可以包含:

json
{
"request_id":"req_123",
"tenant_id":"t_001",
"task":"ticket_summary",
"user_region":"EU",
"data_class":"confidential",
"policy_version":"2026-06-01",
"route_provider":"provider_b",
"route_model":"balanced-chat",
"degraded":false,
"error_code":null,
"latency_ms":2310,
"input_tokens":3200,
"output_tokens":420
}

  这些字段在事故中很有价值。当某个地区失败率升高,你可以按 region + provider + model 聚合;当某个模型结构化输出变差,你可以按 prompt_version + model 对比;当某个租户成本飙升,你可以定位到任务类型和重试次数。

  常见观测缺口也要提前规避:只记录供应商错误,不记录策略决策;只记录 token,不记录业务任务;只看平均延迟,不看 P95 和超时;只看模型成功率,不看 schema 失败率。对于 AI 应用,「模型调用成功」和「业务结果可用」应该是两个指标。

上线前做一次供应商失效演练

  如果 AI 功能已经进入生产环境,不要等真实限制发生后再验证。可以做一次小范围失效演练,目标不是证明系统完美,而是找出写死依赖。

  演练可以按这个路径执行:

步骤
工程动作
判断标准
1
在配置中心增加供应商禁用开关
只对测试租户或灰度环境生效
2
选择客服总结、风险分类、检索问答等核心任务
每个任务都有固定输入样本和输出边界
3
关闭主供应商
请求进入备用模型或明确降级
4
模拟备用模型返回非法 JSON
schema 校验、错误分类、人工兜底生效
5
记录缺口并转工程任务
缺口能落到任务、字段、策略或代码改动

  运行时配置可以很简单:

yaml
ai_runtime:
disabled_providers:
-provider_a
failover_mode:capability_based

  演练结果不要只写「备用供应商质量较差」。更好的记录方式是可执行的,例如:ticket_summary 在降级模型下缺少 evidenceMessageIds,当前不能自动写入 nextAction,需要改为人工确认。

  上线前还可以用下面这张表做评审:

检查项
判断标准
业务代码不直接调用供应商 SDK
所有调用经过内部 AI Gateway 或 AI Client
策略默认拒绝
没有匹配规则时不会调用外部模型
任务有能力画像
每个任务标明上下文、结构化输出、延迟、质量要求
有降级路径
不同失败类型对应重试、切换、人工处理或拒绝
输出有 schema 校验
模型结果不能绕过业务状态机
日志可审计
能还原策略版本、路由选择、供应商、模型和错误码
敏感数据受控
日志、提示词、供应商调用都经过数据分类和脱敏判断
成本有上限
租户、任务、模型维度有预算或速率限制

先治理接口,再扩展供应商

  面对外部政策和供应商变化,最容易做但不一定最有效的动作是「再接一家模型」。如果内部没有统一任务契约、策略层和适配器,多接一家只会让复杂度翻倍:两套提示词、两套错误处理、两套日志字段,以及更多不可解释的质量差异。

  更务实的顺序是:

  1. 先把业务中的 AI 调用收敛到一个内部 Client 或 Gateway。
  2. 为核心任务定义输入输出契约,尤其是结构化输出和失败类型。
  3. 加入策略层,至少覆盖租户、区域、数据类别和任务用途。
  4. 建立模型能力表,再按任务配置首选模型和降级模型。
  5. 补齐观测指标,区分供应商可用性、输出质量和业务可用性。
  6. 最后再扩展供应商,并通过演练验证切换路径。

  这套方法不会让团队完全摆脱外部不确定性。出口管制、区域限制、供应商策略和模型能力变化,本来就不是单个应用团队能控制的。但后端团队可以控制自己的依赖边界:不要让业务流程直接绑定某个模型,不要让合规规则散落在代码里,不要让模型输出绕过校验,不要在事故发生时才知道哪些功能无法降级。

  近期热点给我们的工程提醒不是「押注哪家模型更安全」,而是把 AI 当作会变化、会受限、会失败的外部依赖来设计。对生产系统来说,这比追逐单个模型能力更重要。

  从今天开始,最小可行动作可以很小:找出代码里直接调用模型 SDK 的位置,列出前三个最关键 AI 任务,为它们补一份输入输出契约和失败处理表。只要这一步完成,后续策略层、路由层和供应商适配器就有了落点。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-26 22:11:01 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/801586.html
  2. 运行时间 : 0.125108s [ 吞吐率:7.99req/s ] 内存消耗:4,746.88kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=48338f1c9ff00ba5e57e52b898348470
  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 ( 3.94 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.30 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.000616s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000853s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000341s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000287s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000482s ]
  6. SELECT * FROM `set` [ RunTime:0.000213s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000518s ]
  8. SELECT * FROM `article` WHERE `id` = 801586 LIMIT 1 [ RunTime:0.000590s ]
  9. UPDATE `article` SET `lasttime` = 1782483061 WHERE `id` = 801586 [ RunTime:0.014031s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000307s ]
  11. SELECT * FROM `article` WHERE `id` < 801586 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000511s ]
  12. SELECT * FROM `article` WHERE `id` > 801586 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000402s ]
  13. SELECT * FROM `article` WHERE `id` < 801586 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000791s ]
  14. SELECT * FROM `article` WHERE `id` < 801586 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002977s ]
  15. SELECT * FROM `article` WHERE `id` < 801586 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.015582s ]
0.126715s