乐于分享
好东西不私藏

深度拆解 Claude Code 源码系列(四):流式处理 —— 实时数据流的精密编排

深度拆解 Claude Code 源码系列(四):流式处理 —— 实时数据流的精密编排

编者:这是系列文章的第四章。在前三章中,我们了解了 Claude Code 的整体架构、查询引擎和消息系统。本章将深入流式处理系统 —— 理解 Claude Code 如何处理 SSE 事件流、实现流式工具调用、以及流式响应的错误处理和重试机制。


引子:为什么需要流式处理?

想象这样一个场景:
你让 Claude Code 分析一个大型项目。它需要读取几十个文件、执行多个命令、然后给出分析报告。整个过程可能需要 30 秒甚至更久。
如果没有流式处理,你会经历什么?
30 秒的空白等待。
屏幕上什么都没有,你不知道 Claude 是在思考、还是在读取文件、还是已经卡死了。你只能盯着光标闪烁,心里想着:"它还在运行吗?"
有了流式处理,体验完全不同。
Claude 的输出逐字出现在屏幕上,就像有一个人在实时打字。你能看到它的思考过程,看到它在读取哪些文件,看到它在执行什么命令。即使整个过程需要 30 秒,你也不会觉得漫长 —— 因为你一直在接收信息。
这就是流式处理的价值:让等待变得可感知、可理解、可交互。
但流式处理不仅仅是"逐字显示"这么简单。它涉及:
  • SSE(Server-Sent Events)协议 —— 如何从 API 接收流式事件
  • 事件解析 —— 如何将事件流转换为消息对象
  • 状态管理 —— 如何追踪流式响应的状态
  • 工具调用 —— 如何在流式中触发工具执行
  • 错误处理 —— 如何在流式中断后恢复
  • 性能优化 —— 如何避免频繁的 UI 更新导致卡顿
在这一章中,我们将深入 Claude Code 的流式处理系统,理解它是如何实现这些复杂功能的。

第一部分:SSE 事件流基础 —— 从协议到事件类型

1.1 什么是 SSE?

SSE(Server-Sent Events)是一种基于 HTTP 的服务器推送技术。与 WebSocket 不同,SSE 是单向的 —— 只有服务器向客户端推送数据。
SSE 的工作原理:
1. 客户端发起 HTTP 请求
2. 服务器保持连接打开
3. 服务器逐步发送数据,每行以 data: 开头
4. 客户端逐行解析数据
SSE 事件的格式:
为什么 Claude Code 选择 SSE 而不是 WebSocket?
对于 AI 对话场景,SSE 是更合适的选择 —— 客户端发送请求,服务器流式返回响应,不需要客户端向服务器推送数据。

1.2 Claude Code 的流式架构

让我们看看 Claude Code 的流式处理整体架构:
关键组件:
1. SDK Stream 对象 —— Anthropic SDK 提供的流式接口
2. 事件迭代器 —— 遍历 Stream 对象,逐个获取事件
3. 累积器状态 —— 追踪当前消息的构建状态
4. StreamEvent —— 标准化的事件对象,yield 给调用方

1.3 流式 vs 非流式

Claude Code 的 API 调用默认使用流式模式,但也支持非流式调用。
流式调用:
非流式调用:
两种模式的对比:
为什么 Claude Code 默认使用流式?
答案很明显:用户体验。流式响应让用户能够在 Claude 还在"思考"时就看到部分输出,这极大地降低了感知延迟。

1.4 StreamEvent 类型定义

在 Claude Code 中,SSE 事件被标准化为 StreamEvent 类型:
每种事件的含义:

第二部分:流式事件处理 —— 事件解析与状态累积

SSE 事件流只是数据的传输方式。要将这些事件转换为有意义的消息对象,需要一个精密的事件处理系统。

2.1 事件迭代器

Claude Code 通过迭代 SDK Stream 对象来获取事件:
关键点:
1. for await...of —— 使用异步迭代器,等待每个事件到达
2. processStreamEvent —— 根据事件类型调用不同的处理逻辑
3. yield* —— 将处理结果 yield 给调用方(QueryEngine)

2.2 累积器状态

流式事件处理的核心是一个累积器(accumulator),用于追踪消息的构建状态:
累积器的作用:
每个 SSE 事件只包含增量信息。例如,content_block_delta 事件只包含新增的文本片段,而不是完整的文本。累积器负责将这些增量信息拼接成完整的内容。

2.3 事件处理状态机

事件处理本质上是一个状态机:
状态转换解释:
1. Idle → MessageStarted —— 收到 message_start,初始化消息骨架
2. MessageStarted → BlockStarted —— 收到 content_block_start,开始新内容块
3. BlockStarted → Accumulating —— 收到 content_block_delta,开始累积内容
4. Accumulating → Accumulating —— 继续收到 delta,持续累积
5. Accumulating → BlockCompleted —— 收到 content_block_stop,完成内容块
6. BlockCompleted → BlockStarted —— 收到下一个 content_block_start,开始新内容块
7. BlockCompleted → MessageUpdated —— 收到 message_delta,更新消息统计
8. MessageUpdated → MessageCompleted —— 收到 message_stop,消息完成

2.4 文本累积

文本内容块的累积是最简单的:
关键点:
  • accumulator.currentText += event.delta.text —— 累加每个增量

  • yield { type: 'partial_text', ... } —— 立即 yield 给调用方,实现流式显示

2.5 工具参数累积

工具调用比文本复杂得多。工具参数通常以 JSON 格式流式到达:
为什么工具参数不 yield 中间结果?
因为 JSON 片段在累积完成之前可能不是有效的 JSON。如果提前解析并 yield,会导致解析错误。

2.6 内容块完成

当收到 content_block_stop 事件时,内容块构建完成:
关键操作:
1. 根据类型构建内容块 —— 文本、工具、思考过程有不同的格式
2. JSON 解析 —— 工具参数的 JSON 字符串解析为对象
3. 重置累积状态 —— 为下一个内容块做准备
4. yield 完整内容块 —— 通知调用方内容块已完成

2.7 消息完成

当收到 message_stop 事件时,消息构建完成:
完整消息的组成:
  • content —— 所有内容块的数组

  • stop_reason —— 停止原因(end_turn、tool_use、max_tokens 等)

  • usage —— Token 使用统计

2.8 流式事件的消费方

流式事件被 yield 给 QueryEngine,QueryEngine 根据事件类型执行不同的操作:
消费方的职责:
1. 部分文本 —— 更新 UI,实现流式显示
2. 内容块完成 —— 如果是工具调用,触发工具执行
3. 完整消息 —— 追加到消息历史
4. 错误事件 —— 触发错误处理和重试

第三部分:流式工具调用 —— 从参数累积到执行触发

在 Claude Code 的核心循环中,工具调用是最复杂的流式场景。

3.1 工具调用的流式特征

当 Claude 决定调用工具时,它会输出一个 tool_use 内容块。这个内容块的参数是流式到达的:
关键挑战:
1. 参数不完整 —— 在 content_block_stop 之前,JSON 可能无效
2. 需要立即执行 —— 一旦参数完整,需要立即触发工具执行
3. 执行结果需要发回 —— 工具结果作为用户消息发回 API

3.2 工具调用的触发时机

工具调用在 content_block_stop 事件后触发:
为什么不在 delta 中触发?
因为在 content_block_stop 之前,JSON 参数可能不完整。例如:
{"path": "src/utils/← 缺少闭合引号和括号
如果在这个状态下尝试 JSON.parse(),会抛出语法错误。

3.3 工具执行循环

工具调用触发后,进入工具执行循环:
循环的关键步骤:
1. 解析参数 —— 从累积的 JSON 字符串解析为对象
2. 权限检查 —— 用户是否批准了这个工具调用
3. 执行工具 —— 调用工具的实现函数
4. 构建结果消息 —— 将工具结果包装为用户消息
5. 继续 API 调用 —— 将结果发回 API,等待下一个响应

3.4 工具结果的格式

工具结果作为用户消息发回 API:
关键字段:
  • tool_use_id —— 关联到原始工具调用的 ID

  • content —— 工具执行结果(文本、错误信息等)

  • parent_tool_use_id —— 追踪工具调用的父级关系

3.5 并行工具调用

Claude 可以在一次响应中调用多个工具。这些工具可以并行执行:
并行执行的好处
  • 减少总耗时 —— 3 个工具各耗时 2 秒,串行需要 6 秒,并行只需 2 秒

  • 提高吞吐量 —— 可以一次读取多个文件、执行多个命令

并行执行的挑战:
  • 结果顺序不确定 —— 需要使用 tool_use_id 关联结果

  • ·错误隔离 —— 一个工具失败不应影响其他工具


第四部分:错误处理与重试 —— 流式中断的恢复机制

流式处理相比非流式处理,面临更多的错误场景。

4.1 流式错误类型

流式响应可能遇到以下错误:

4.2 流式错误检测

错误在流式响应中通过 error 事件检测:

4.3 重试策略

不是所有错误都可以重试。Claude Code 的重试策略:
重试次数限制:

4.4 流式中断后的恢复

流式响应中断后,恢复是一个挑战。因为响应是逐步到达的,中断时可能只有部分数据。
恢复策略:
1. 丢弃不完整的消息 —— 中断的消息可能不完整,不能保留
2. 保留完整的消息 —— 已完成的消息可以保留
3. 重新发送请求 —— 使用相同的参数重新发起 API 请求

4.5 降级策略

当重试也失败时,系统需要降级:
错误消息被 yield 给 QueryEngine,由 QueryEngine 决定如何处理:
  • ·可重试 —— 显示"正在重试...",然后重试

  • ·不可重试 —— 显示错误信息,让用户决定


第五部分:流式渲染管线 —— 从事件到 UI 的实时渲染

流式处理的最终目标是让用户实时看到响应。这需要一个高效的渲染管线。

5.1 流式渲染的架构

5.2 文本缓冲区和节流

流式文本到达速度很快(可能每 10ms 一个事件)。如果每个事件都触发 UI 渲染,会导致性能问题。
解决方案:节流渲染
节流的好处:
  • 减少渲染次数 —— 从每 10ms 一次降低到每 50ms 一次

  • 保持流畅体验 —— 50ms 的延迟用户几乎察觉不到

  • 避免终端闪烁 —— 频繁更新可能导致终端闪烁

5.3 工具调用状态渲染

工具调用在流式响应中有特殊的状态显示:
🔧 正在调用:FILE_READ(src/utils/messages.ts)
状态转换:

5.4 思考过程渲染

当启用思考模式时,Claude 会输出 thinking 内容块:
思考过程通常以灰色、缩进的样式显示,与正常响应区分开来。

第六部分:流式性能优化 —— 缓存、批量处理与内存管理

流式处理面临独特的性能挑战。

6.1 Prompt 缓存

Anthropic API 支持 prompt 缓存,可以缓存系统提示和消息历史。
缓存的好处:
  • 减少延迟 —— 缓存命中时,首字延迟降低 50-80%
  • 降低成本 —— 缓存读取比重新处理便宜 50%

缓存的挑战:
  • 缓存失效 —— 消息历史变化时缓存失效

  • 缓存大小限制 —— 缓存有大小限制

6.2 流式批处理

当工具调用产生大量输出时,需要批处理:

6.3 内存管理

流式响应中,内存管理很重要:
问题:流式事件在累积器中累积,如果响应很大(如 100K tokens),可能占用大量内存。
解决方案:
1. 及时 yield —— 事件处理后立即 yield,不保留在内存
2. 释放引用 —— 内容块完成后释放累积状态
3. 压缩消息历史 —— 定期压缩消息历史,减少内存占用


总结与预告

本章回顾

在这一章中,我们深入了 Claude Code 的流式处理系统,理解了它是如何实现实时数据流的精密编排的:
1. SSE 事件流基础
SSE 协议是流式处理的基础。Claude Code 选择 SSE 而不是 WebSocket,因为 SSE 更适合 AI 对话的单向流式响应场景。
2. 流式事件处理
累积器和状态机是流式事件处理的核心。每个事件只包含增量信息,累积器负责将它们拼接成完整的消息。
3. 流式工具调用
工具调用在 content_block_stop 后触发,确保 JSON 参数完整。并行工具调用可以显著减少总耗时。
4. 错误处理与重试
流式处理面临更多的错误场景。可重试的错误自动重试,不可重试的错误降级为用户可见的错误信息。
5. 流式渲染管线
节流渲染避免了频繁更新导致的性能问题。工具调用和思考过程有特殊的渲染样式。
6. 流式性能优化
Prompt 缓存、批处理、内存管理,让流式处理在大规模场景下依然高效。

这些设计你可以借鉴什么?

1. 累积器模式 —— 用状态机管理流式数据的拼接
2. 节流渲染 —— 避免高频事件导致的 UI 性能问题
3. 并行工具调用 —— 一次调用多个工具,减少总耗时
4. 重试策略 —— 区分可重试和不可重试的错误
5. Prompt 缓存 —— 利用 API 的缓存功能降低延迟和成本

下一章预告

在理解了流式处理之后,下一章我们将深入 **工具系统** —— 理解 Claude Code 的 60+ 工具是如何设计和实现的、工具接口如何定义、以及工具执行的权限管理和沙箱机制。

如果你想了解 Claude 是如何"操控"你的文件系统和 Shell 的,下一章会给你答案。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-09 18:21:16 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/596044.html
  2. 运行时间 : 0.119450s [ 吞吐率:8.37req/s ] 内存消耗:4,579.09kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=21aa834f52b13ee67af618c7647afafb
  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.000537s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000822s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002051s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000482s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000565s ]
  6. SELECT * FROM `set` [ RunTime:0.000196s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000586s ]
  8. SELECT * FROM `article` WHERE `id` = 596044 LIMIT 1 [ RunTime:0.000613s ]
  9. UPDATE `article` SET `lasttime` = 1778322076 WHERE `id` = 596044 [ RunTime:0.005253s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000385s ]
  11. SELECT * FROM `article` WHERE `id` < 596044 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000581s ]
  12. SELECT * FROM `article` WHERE `id` > 596044 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000454s ]
  13. SELECT * FROM `article` WHERE `id` < 596044 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001145s ]
  14. SELECT * FROM `article` WHERE `id` < 596044 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000582s ]
  15. SELECT * FROM `article` WHERE `id` < 596044 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000873s ]
0.123424s