乐于分享
好东西不私藏

前端与 AI(十一):AI 应用里的状态管理,比传统前端复杂在哪里

前端与 AI(十一):AI 应用里的状态管理,比传统前端复杂在哪里

传统前端状态管理已经不轻松:表单、请求、列表分页、权限、弹窗、缓存、路由,任何一类处理不好,页面都会变乱。

AI 应用又多了一层复杂度。一次用户输入不再只是触发接口请求,而可能启动意图识别、知识检索、模型生成、流式输出、工具调用、用户确认、失败重试和任务恢复。

传统交互更像:

用户点击按钮,前端发请求,接口返回结果,页面渲染反馈。

AI 交互更像:

用户提出目标,系统启动一个不确定任务;任务可能分阶段推进、中断、分叉、等待确认,最后形成一个可接受的结果。

所以 AI 应用状态管理的核心变化,不是多一个 loading,而是从“请求状态”转向“任务状态”。

难点是任务生命周期,而不是组件局部数据。

状态越清楚,用户越有控制感;状态越含糊,应用越像黑盒。


01|传统前端状态管理解决什么

传统前端状态大致有四类。

视图状态

比如当前 tab、弹窗开关、表格选中项、输入框内容、滚动位置。这类状态靠近 UI,生命周期短,通常局部 useState 就够。

服务端数据状态

比如用户信息、订单详情、搜索结果、权限数据。前端要处理请求中、成功、失败、缓存、重新请求、分页筛选和乐观更新。React Query、SWR、Apollo Client 擅长解决这一类问题。

业务流程状态

比如多步骤表单、审批、支付、上传、登录注册。它们有阶段、前置条件、失败回退、用户确认和服务端同步,比普通请求更复杂。

全局状态

比如登录态、主题、语言、当前组织、权限集合、WebSocket 连接、全局通知。难点在作用域:一旦边界不清,就会到处读、到处改、难以追踪。

这些状态并不简单,但大多数传统交互仍有一个确定前提:用户动作、请求响应和页面变化之间的关系相对清楚。AI 应用打破的正是这种确定性。


02|AI 应用新增了哪些状态

AI 应用不是在传统前端上加一个聊天框。它会引入几类新状态。

生成中

AI 生成常常是流式的,结果一边产生一边展示。前端需要区分请求是否建立、首 token 是否返回、是否仍在输出、内容是否完整、是否可引用、是否已持久化。

传统 loading 表示“还没有结果”;流式生成里,用户已经看到部分结果,但任务尚未完成。这是典型的中间态。

可取消

用户可能因为问题问错、生成方向不对、结果太长、成本太高或上下文切换而停止任务。取消时可能已有部分内容,前端要决定是否保留、如何标记、能否继续生成、后端是否真的停止,以及历史和计费如何记录。

“完成、失败、用户中断”不能混在一起。

工具调用

AI 应用不只生成文本,还可能查询数据库、检索知识库、读取文件、生成图表、创建任务、修改代码或发送邮件。

一旦有工具调用,状态就要表达:模型为何调用工具、调用了什么、参数是什么、执行是否成功、结果如何回到模型、是否需要用户确认。否则用户只能看到一个转圈和最终答案,无法判断过程是否可信。

待确认

当 AI 准备删除数据、发送邮件、修改代码、提交订单、调用付费接口或发布内容时,结果还没有真正生效,状态应该是“待确认”。

待确认要回答:建议做什么、影响范围是什么、用户能否编辑或拒绝、确认后是否可撤销、下一步进入哪个状态。动作越强,边界越要清楚。

不确定结果

AI 输出可能是草稿、建议、推测、摘要、解释、候选版本或待校验答案,不能一律当成最终事实。

可以按场景区分:

  • draft
    :草稿。
  • candidate
    :候选答案。
  • verified
    :已校验。
  • rejected
    :用户拒绝。
  • applied
    :已应用。

这不是文字游戏,而是产品责任边界。

可恢复

AI 任务失败可能发生在输入校验、检索、模型生成、工具调用、流式连接、内容审核、用户取消或前端断开等阶段。不同阶段对应不同恢复方式:原地重试、换模型、重新检索、补充信息、继续生成或重新开始。

因此错误状态至少要包含失败阶段、原因、是否可重试、从哪里重试、是否保留已生成内容,以及用户可执行动作。


03|为什么简单 loading 不够

很多 AI 应用一开始会写成这样:

type State = {    loadingboolean;    error?: string;    data?: Message[];};

Demo 阶段能跑,真实产品很快不够用。

它无法表达阶段

用户发送一句话后,系统可能要创建会话、保存用户消息、检索知识库、调用模型、流式返回、调用工具、继续生成、保存助手消息。它们都可以叫 loading,但交互完全不同。

检索慢,要告诉用户正在查资料;生成慢,要展示流式内容;工具慢,要说明正在执行什么;保存失败,应该只重试持久化,而不是重新生成全部内容。

它无法表达中断

流式生成中断后,loading 变成 false,但这不等于成功,也不等于失败。它可能是用户停止、网络断开、服务端超时、内容被拦截或页面切换。

如果只记录 loading: false,下一步操作就无从判断。

它无法表达部分结果

一篇文章生成到一半、一段 SQL 只给了结论、一次代码生成只完成文件 A,这些都不是“空”,也不是“完成”,而是“有部分结果但任务未完成”。

缺少这个状态,用户容易误用半成品。

它无法表达控制权

AI 应用里,用户需要知道能否取消、编辑、继续追问、重新生成、确认执行、撤销或保存当前结果。状态不清楚,按钮就会乱,系统也会显得不可靠。


04|从请求状态转向任务状态

AI 应用更适合用“任务”建模。一个简化状态可以是:

type AiTaskStatus =  | "idle"  | "submitted"  | "planning"  | "retrieving"  | "generating"  | "tool_calling"  | "waiting_user_confirm"  | "applying"  | "completed"  | "cancelled"  | "failed";

这些状态比 loading 复杂,但表达的信息更接近真实交互。

状态
含义
前端重点
submitted
用户输入已被接收
创建任务、保存输入、建立连接
planning
系统判断是否检索、调用工具或追问
识别规划失败和生成失败的区别
retrieving
正在检索知识或上下文
展示资料来源、空结果和降级策略
generating
正在流式生成
处理停止、滚动、Markdown 半成品
tool_calling
正在调用外部能力
展示工具、参数摘要、结果和失败原因
waiting_user_confirm
等待用户确认
区分建议和执行
applying
正在把结果应用到系统
处理保存、写入、提交失败
completed
任务完成
明确结果是否完整、保存、可追问
cancelled
任务取消
区分用户主动、系统自动、页面离开
failed
任务失败
带上失败阶段和恢复方式

失败状态建议带阶段:

type AiTaskError = {    stageAiTaskStatus;    messagestring;    retryableboolean;    recoverFrom?: "restart" | "resume" | "retry_stage" | "edit_input";};

这样前端才能判断是重新检索、重新保存、继续生成,还是让用户修改输入。


05|消息状态也要拆开

很多 AI 应用以消息列表为核心,但消息不是普通数组。一条助手消息也有生命周期:

type MessageStatus =  | "pending"  | "streaming"  | "interrupted"  | "completed"  | "failed"  | "replaced";

几个关键状态要分清:

  • pending
    :助手消息占位已出现,但还没有内容。
  • streaming
    :内容正在写入,需要处理 Markdown 半成品、自动滚动、停止按钮和复制限制。
  • interrupted
    :生成被中断,不等于失败,也不等于完成,应允许继续、重试、追问或删除。
  • completed
    :内容完整生成,但还要看是否保存、引用、校验或应用。
  • failed
    :失败要区分首 token 前、生成中途和保存失败。
  • replaced
    :重新生成后旧版本是否保留、能否切换,需要明确版本关系。

任务和消息最好分开建模:一个任务可能生成多条消息,一条消息可能有多个版本,一个任务也可能调用多个工具。全部塞进 messages 数组,后续会很难维护。


06|工具调用状态要透明,但不能吵

Agent 类产品经常展示工具调用过程,展示过少会让用户不信任,过多又会制造噪音。前端状态应支持分层展示。

普通用户只需要关键阶段:

  • 正在查找资料。
  • 正在分析文件。
  • 正在生成方案。
  • 等待你确认发送。

专业用户可以展开细节:

  • 使用了哪些检索结果。
  • 调用了哪个工具。
  • 参数摘要是什么。
  • 返回了什么错误。
  • 哪一步耗时最长。

高风险动作必须明确确认。涉及写操作、外部影响、金钱、权限和发布时,界面要说明将执行什么、影响范围、是否可撤销,以及确认后的结果。这里的状态不仅是技术状态,也是责任边界。


07|失败恢复要从一开始设计

AI 任务复杂后,失败不是一个点,而是可能发生在任何阶段。

失败阶段
常见原因
更合适的恢复
输入失败
缺少文件、知识库、关键条件或权限
让用户补充信息
检索失败
超时、空结果、知识库不可用
重试、扩大查询、切换知识库或降级回答
生成失败
模型超时、连接断开、token 限制、内容拦截
保留部分内容,允许继续或换模型
工具失败
参数错误、外部服务异常、权限不足
保留计划或参数,允许修改后重试
保存失败
内容已生成但历史未持久化
重新保存、导出、复制,刷新前提醒

不要把所有错误都变成“出错了,请重试”。阶段越清楚,恢复越精确,用户越不容易被迫从头来过。


08|一张 AI 应用状态分层表

可以把 AI 应用状态分成五层。

状态层
关注问题
常见字段
典型 UI
输入层
用户给了什么目标和约束
input、attachments、context、validation
输入框、文件列表、上下文标签
任务层
当前任务推进到哪一步
taskId、status、stage、progress、abortable
阶段提示、停止按钮、进度反馈
消息层
每条输入输出是什么状态
messageId、role、content、status、version
消息气泡、流式光标、版本切换
工具层
系统调用了什么能力
toolName、params、result、approvalStatus
工具卡片、确认面板、调用记录
恢复层
出错后还能怎么处理
errorStage、retryable、recoverAction
重试、继续、重新生成、补充信息

只有消息层,没有任务层,用户不知道系统正在做什么;只有任务层,没有恢复层,失败后只能重来;没有工具层,Agent 行为会变成黑盒;没有输入层记录,用户也难以理解答案基于什么生成。


09|一个更合理的前端状态模型

可以用一个简化模型表达 AI 任务:

type AiTask = {    idstring;    conversationIdstring;    status:    | "submitted"    | "retrieving"    | "generating"    | "tool_calling"    | "waiting_user_confirm"    | "applying"    | "completed"    | "cancelled"    | "failed";    input: {        textstring;        attachmentsAttachment[];        contextIdsstring[];    };    outputMessageId?: string;    currentToolCallId?: string;    error?: {        stagestring;        messagestring;        retryableboolean;        recoverAction?: "retry" | "resume" | "restart" | "edit_input";    };    createdAtnumber;    updatedAtnumber;};

消息和工具调用可以独立建模:

type AiMessage = {    idstring;    taskId?: string;    role"user" | "assistant" | "tool" | "system";    contentstring;    status"pending" | "streaming" | "interrupted" | "completed" | "failed";    version?: number;    references?: Reference[];};type ToolCall = {    idstring;    taskIdstring;    namestring;    status"pending" | "running" | "waiting_approval" | "succeeded" | "failed";    paramsSummarystring;    resultSummary?: string;    error?: string;};

重点不是照抄类型,而是避免用一个 messages 数组或一个 loading 统治所有阶段。任务、消息、工具、错误恢复要有边界。


10|状态越清楚,交互越稳定

状态建模会直接影响交互。

停止按钮在 retrievinggeneratingtool_calling 阶段含义不同:可能是中断查询、停止模型输出,也可能是取消外部任务。如果不分阶段,用户点了也不知道到底停了什么。

重新生成同样不是一个动作。它可能是同上下文重来、重新检索后生成、换模型、基于编辑后的输入生成,或从部分结果继续。没有阶段和上下文记录,就只能粗暴“从头再来”。

页面切换和多任务并发也依赖任务模型。AI 任务可能比页面停留时间更长,用户回来后能否恢复、旧任务是否会污染新结果,都需要任务 ID、服务端状态和可恢复机制支持。


11|状态不是越多越好

状态要清楚,但不是越细越好。判断原则是:

只有当不同状态对应不同交互、恢复方式或责任边界时,才值得拆开。

比如“模型排队中”和“模型连接中”是否要分开,取决于用户是否需要看到、失败恢复是否不同、是否影响权限或计费。若只是内部实现细节,可以不暴露到主状态。

好的状态设计,不是枚举所有过程,而是表达关键差异。


12|给前端工程师的实践建议

做 AI 应用前端时,可以按五步检查。

  1. 先画任务生命周期
    :用户发起任务后,哪些阶段可以取消、确认、重试,哪里会产生部分结果,哪里需要持久化。
  2. 把部分结果当成一等状态
    :半截回答、未完成代码、已生成未应用的建议、已执行一半的工具任务,都要有明确标识。
  3. 高风险动作必须有确认态
    :发消息、写数据库、删除文件、发布内容、修改配置、触发付款,都要区分“建议”和“执行”。
  4. 错误要带阶段
    :至少记录在哪个阶段失败、是否可重试、是否保留已有内容、用户下一步能做什么。
  5. 状态要能支持调试
    :记录输入、阶段、工具调用、检索摘要、模型返回、用户取消或确认动作、最终输出版本。

这些不是额外装饰,而是让复杂任务可追踪、可恢复。


结语:AI 前端不是多一个 loading 就够了

AI 应用会把前端带到更复杂的状态世界:任务提交、检索、生成、工具调用、等待确认、应用结果、完成、中断和恢复。

这些状态决定用户是否知道系统在做什么,能否及时停止,能否理解结果来源,能否从失败中恢复,也决定他们是否敢让 AI 执行真实动作。

前端价值不只是把模型输出渲染出来,而是把不确定任务组织成用户能理解、能控制、能恢复的产品过程。

下一篇继续讨论技术判断:

工程师如何建立自己的技术罗盘。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-08 10:38:19 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/826440.html
  2. 运行时间 : 0.187582s [ 吞吐率:5.33req/s ] 内存消耗:4,813.67kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=871edc55822312f16853f467ed7aa614
  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.000964s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001596s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000798s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000710s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001304s ]
  6. SELECT * FROM `set` [ RunTime:0.000607s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001443s ]
  8. SELECT * FROM `article` WHERE `id` = 826440 LIMIT 1 [ RunTime:0.001230s ]
  9. UPDATE `article` SET `lasttime` = 1786156699 WHERE `id` = 826440 [ RunTime:0.002245s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000679s ]
  11. SELECT * FROM `article` WHERE `id` < 826440 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001167s ]
  12. SELECT * FROM `article` WHERE `id` > 826440 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001313s ]
  13. SELECT * FROM `article` WHERE `id` < 826440 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003776s ]
  14. SELECT * FROM `article` WHERE `id` < 826440 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001410s ]
  15. SELECT * FROM `article` WHERE `id` < 826440 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001047s ]
0.189302s