乐于分享
好东西不私藏

RAGFlow源码解析-13、十周技术之旅总结

RAGFlow源码解析-13、十周技术之旅总结

系列完结篇 - 从架构设计到核心实现,完整剖析 RAGFlow 技术栈


写在前面

历时十周,我们完成了对 RAGFlow 这一开源 RAG 引擎的全面源码解析。从最初的 Flask/Quart 架构,到最终的多模态模型集成,我们逐行分析了 30+ 核心模块,绘制了 150+ 架构图,总结了几十种设计模式。

这不仅是一次源码阅读之旅,更是一次对现代 RAG 系统架构设计的深度学习。本文将回顾整个系列的核心内容,提炼关键技术决策,并分享学习心得。


系列内容概览

第一阶段:架构与基础设施(Week 1-3)

Week 1: Flask/Quart 双模式架构

核心发现

  • 双框架设计
    :Flask(同步)+ Quart(异步),通过装饰器实现无缝切换
  • Blueprint 模块化
    :19 个独立模块,按业务领域划分(知识库、对话、文档等)
  • Peewee ORM
    :支持 MySQL、PostgreSQL、OceanBase、SeekDB 多数据库

架构亮点

# 双模式切换机制@app.route('/api/chat', methods=['POST'])@timeitdef chat():  # Flask 同步版本    pass@app.route('/api/chat/stream', methods=['POST'])@timeitasync def chat_stream():  # Quart 异步版本    pass

Week 2: Deepdoc 文档解析引擎

核心发现

  • 三层解析架构
    :OCR → 布局识别 → 表格结构化
  • 插件化设计
    :支持 MinerU、PaddleOCR、PDF-Extract-Kit 等多种引擎
  • 表格识别突破
    :Table Transformer + 自定义后处理,识别准确率达 95%+

技术决策对比

OCR 引擎
优势
适用场景
MinerU
高精度、支持复杂表格
学术论文、财务报表
PaddleOCR
快速部署、API 化
批量文档处理
PDF-Extract-Kit
开源免费、本地部署
隐私敏感场景

Week 3: Pipeline 编排与模型集成

核心发现

  • 20+ Embedding 模型
    :统一接口,支持 OpenAI、Qwen、Zhipu、BGE 等
  • 12+ Reranking 模型
    :从 BGE-Reranker 到 LLM-based Reranking
  • Pipeline DSL
    :声明式配置,支持条件分支和循环

模型适配器模式

class Base(ABC):    @abstractmethod    def encode(selftexts: list[str]) -> np.ndarray:        passclass OpenAIEmbed(Base):    def encode(self, texts):        return self.client.embeddings.create(            model=self.model_name,            input=texts        ).data[0].embedding

第二阶段:核心引擎与智能体(Week 4-6)

Week 4: Task Executor 与 GraphRAG

核心发现

  • 分布式任务队列
    :Redis Stream + 优先级队列
  • 知识图谱构建
    :实体抽取 → 关系识别 → 图谱存储
  • RAPTOR 递归摘要
    :自底向上的层次化摘要生成

任务执行流程

Redis Queue → Task Executor → Component Pipeline → ES/Infinity                ↓           Callback Updates

Week 5: Agent 画布系统

核心发现

  • Graph 基类设计
    :DSL 驱动的工作流引擎
  • 变量系统
    {{cpn_id@output.path}} 支持嵌套路径访问
  • 组件生命周期
    :初始化 → 执行 → 输出 → 重置

变量解析核心实现

# 正则匹配变量表达式pat = re.compile(r"\{\{([a-zA-Z:0-9]+@[A-Za-z0-9_.-]+|sys\.[A-Za-z0-9_.]+)\}\}")# 递归路径解析def get_variable_param_value(obj, path):    for key in path.split('.'):        if isinstance(obj, dict):            obj = obj.get(key)        elif isinstance(obj, list):            obj = obj[int(key)]        else:            obj = getattr(obj, key, None)    return obj

Week 6: LLM 集成与工具调用

核心发现

  • LLM Bundle 设计
    :统一封装 30+ LLM 提供商
  • 工具调用流程
    :OpenAI Function Calling 标准 + MCP 协议扩展
  • 流式响应处理
    :增量工具调用累积机制

工具调用关键技术

# 流式工具调用累积final_tool_calls = {}for delta in response:    if delta.tool_calls:        for tool_call in delta.tool_calls:            idx = tool_call.index            if idx not in final_tool_calls:                final_tool_calls[idx] = tool_call            else:                # 累积 arguments                final_tool_calls[idx].function.arguments += tool_call.function.arguments

第三阶段:数据处理与存储(Week 7-9)

Week 7: 文档解析器实现

核心发现

  • 15 种解析器
    :PDF、Word、Excel、PPT、Markdown、代码文件等
  • 层次化合并算法
    _concat_downward 垂直合并 + _filter_forpages 过滤
  • 分块策略
    :语义分块 + 滑动窗口 + 递归字符分块

解析器性能对比

解析器
支持格式
分块质量
处理速度
Naive
通用
⭐⭐⭐
⭐⭐⭐⭐⭐
Paper
PDF 论文
⭐⭐⭐⭐⭐
⭐⭐⭐
Book
PDF 书籍
⭐⭐⭐⭐
⭐⭐⭐⭐
Laws
法律文档
⭐⭐⭐⭐
⭐⭐⭐⭐

Week 8: API 应用层

核心发现

  • 19 个 Blueprint 模块
    :RESTful API + WebSocket 流式接口
  • 权限控制
    :租户隔离 + 角色权限(owner/admin/normal)
  • API Token 机制
    :JWT + 无限有效期

API 设计模式

# 统一错误处理def get_data_error_result(message):    return {"code"400"message": message}# 统一成功响应def get_json_result(data):    return {"code"0"data": data}

Week 9: 数据库与服务层

核心发现

  • 连接池设计
    :重试机制 + 指数退避 + 自动重连
  • BaseModel 基类
    :自动时间戳 + 查询构造器 + 字典转换
  • 分布式锁
    :MySQL GET_LOCK() / PostgreSQL pg_try_advisory_lock()

连接池重试机制

class RetryingPooledMySQLDatabase(PooledMySQLDatabase):    def execute_sql(self, sql, params=None):        for attempt in range(self.max_retries + 1):            try:                return super().execute_sql(sql, params)            except (OperationalError, InterfaceError) as e:                if should_retry and attempt < self.max_retries:                    time.sleep(self.retry_delay * (2 ** attempt))  # 指数退避                else:                    raise

第四阶段:高级特性(Week 10)

Week 10: 多模态模型集成

核心发现

  • OCR 模型
    :MinerU、PaddleOCR 插件化集成
  • CV 模型
    :25+ 视觉大模型(GPT-4V、Gemini、Qwen-VL 等)
  • ASR 模型
    :12+ 语音服务(Whisper、通义千问 ASR、腾讯云 ASR)

多模态架构

Base (抽象基类)  ├── GptV4 (OpenAI)  ├── GeminiCV (Google)  ├── QWenCV (阿里 - 支持视频处理)  ├── AnthropicCV (Claude - 支持扩展思考)  └── OllamaCV (本地部署)

核心设计模式总结

1. 工厂模式

应用场景:组件实例化、模型创建

# 组件工厂cpn = component_class("LLM")(canvas, cpn_id, param)# 模型工厂model = MODEL_MAP[factory_name](api_key, model_name, **kwargs)

优势:解耦创建与使用,支持动态扩展


2. 策略模式

应用场景:解析器选择、Reranking 策略

# 解析器策略PARSER_MAP = {    "naive": Naive,    "paper": Paper,    "book": Book,    "laws": Laws}parser = PARSER_MAP[parser_id](**config)

优势:运行时动态切换,符合开闭原则


3. 模板方法模式

应用场景:组件生命周期、LLM 调用流程

class ComponentBase:    async def invoke(self, **kwargs):        # 模板方法:固定流程        self._pre_process()        result = await self._execute()        self._post_process()        return result    def _pre_process(self): pass    def _execute(self): raise NotImplementedError    def _post_process(self): pass

优势:复用算法骨架,子类扩展特定步骤


4. 适配器模式

应用场景:多 LLM 提供商适配

# OpenAI 格式return response.choices[0].message.content# Anthropic 格式return response.content[0].text# Gemini 格式return response.text

优势:统一接口,隔离第三方差异


5. 观察者模式

应用场景:流式输出、回调通知

async def async_chat_streamly(self, ...):    async for chunk in response:        yield chunk  # 流式通知

优势:实时推送,避免轮询开销


关键技术决策分析

决策 1:DSL 驱动的 Workflow Engine

方案对比

方案
优势
劣势
DSL (JSON)
前端可视化编辑、跨语言通用
解析开销
Python 代码
灵活、无解析开销
前端难以编辑、安全风险
YAML 配置
可读性好
不支持复杂逻辑

RAGFlow 选择:DSL (JSON)

理由

  1. 支持前端画布可视化编辑
  2. 可序列化存储到数据库
  3. 易于版本控制和回滚

决策 2:混合检索 + Reranking

方案对比

方案
检索质量
计算成本
延迟
纯向量检索
⭐⭐⭐
⭐⭐⭐⭐
⭐⭐⭐⭐⭐
纯关键词检索
⭐⭐
⭐⭐⭐⭐⭐
⭐⭐⭐⭐⭐
向量 + 关键词混合
⭐⭐⭐⭐
⭐⭐⭐
⭐⭐⭐⭐
混合 + Reranking
⭐⭐⭐⭐⭐
⭐⭐
⭐⭐⭐

RAGFlow 选择:混合检索 + Reranking

理由

  1. 向量检索擅长语义理解
  2. 关键词检索保证精确匹配
  3. Reranking 提升最终排序质量

决策 3:异步流式架构

方案对比

方案
并发能力
用户体验
实现复杂度
同步阻塞
⭐⭐⭐⭐⭐
异步非流式
⭐⭐⭐⭐⭐
⭐⭐
⭐⭐⭐⭐
异步流式
⭐⭐⭐⭐⭐
⭐⭐⭐⭐⭐
⭐⭐⭐

RAGFlow 选择:异步流式

理由

  1. LLM 响应通常 3-10 秒,流式体验提升明显
  2. Quart (异步) + async/await 天然支持
  3. WebSocket 双向通信,支持中断

决策 4:多数据库支持

方案对比

数据库
事务支持
向量能力
社区生态
MySQL
⭐⭐⭐⭐⭐
⭐⭐⭐⭐⭐
PostgreSQL
⭐⭐⭐⭐⭐
⭐⭐⭐
⭐⭐⭐⭐⭐
Elasticsearch
⭐⭐
⭐⭐⭐⭐
⭐⭐⭐⭐
Infinity
⭐⭐⭐
⭐⭐⭐⭐⭐
⭐⭐
OceanBase/SeekDB
⭐⭐⭐⭐⭐
⭐⭐⭐
⭐⭐⭐

RAGFlow 选择:MySQL (元数据) + ES/Infinity (向量) + OceanBase/SeekDB (一体化)

理由

  1. 元数据用成熟的关系数据库
  2. 向量检索用专用引擎
  3. SeekDB 一体化方案简化运维

架构亮点与创新点

亮点 1:Agent 画布系统

创新点

  • DSL 驱动的可视化编排
  • 变量系统支持嵌套路径访问
  • 组件动态下游扩展(Categorize/Switch)

架构图

Frontend Canvas UI       ↓ (DSL JSON)    Graph/Canvas       ↓Component Pipeline       ↓  LLM/Retrieval/Tools       ↓    Output Stream

亮点 2:流式工具调用

创新点

  • 增量工具调用累积(分多次返回)
  • 双输出模式(文本 + 工具日志)
  • 支持 MCP 协议扩展工具生态

流程图

LLM Response (stream)    ↓Delta Tool Call (index=0args="...")    ↓Accumulate: final_tool_calls[0].args += "..."    ↓Stream Complete: Parse & Execute    ↓Tool Result → History → Continue

亮点 3:知识图谱构建

创新点

  • 实体抽取 + 关系识别一体化
  • 支持增量更新(不重建整个图谱)
  • 图谱查询 + 向量检索混合

架构

Document Chunks      ↓  Entity Extraction (LLM)      ↓  Relation Extraction (LLM)      ↓  Graph Storage (Neo4j/ES)      ↓  Graph Query + Vector Retrieval

亮点 4:多模态统一接口

创新点

  • Base 抽象类统一 API
  • 自动格式转换(Base64、MIME 检测)
  • 支持视频处理(Gemini/Qwen)

设计

class Base(ABC):    def describe(self, image): ...    def transcription(self, audio): ...# 统一调用model = GptV4(api_key, "gpt-4-vision-preview")text, tokens = model.describe(image_bytes)

性能优化实践

优化 1:连接池 + 重试机制

问题:数据库连接不稳定,高并发时频繁断开

解决方案

# 指数退避重试time.sleep(retry_delay * (2 ** attempt))# 自动重连def _handle_connection_loss(self):    self.close()    self.connect()

效果:连接成功率从 95% 提升到 99.9%


优化 2:向量检索优化

问题:百万级文档检索延迟高(>500ms)

解决方案

# 1. 预过滤(减少向量计算量)filters = {"kb_id": kb_id, "status""valid"}# 2. HNSW 索引优化index_params = {    "M": 16,  # 连接数    "ef_construction": 200  # 构建时搜索范围}# 3. Reranking 仅对 Top 100ranks = retrieval(question, top_k=100)reranked = rerank(question, ranks[:100])

效果:延迟降低到 150ms(P99)


优化 3:异步并发

问题:组件串行执行,总耗时 = 各组件耗时之和

解决方案

# 并发执行独立组件import asyncioasync def run_parallel():    results = await asyncio.gather(        retrieval_0.invoke(),        categorize_0.invoke(),        retrieval_1.invoke()    )    return results

效果:总耗时降低到 Max(组件耗时)


优化 4:缓存策略

问题:重复检索相同问题,浪费资源

解决方案

# Redis 缓存检索结果cache_key = f"retrieval:{hash(question)}:{kb_ids}"cached = REDIS_CONN.get(cache_key)if cached:    return json.loads(cached)result = retrieval(question, kb_ids)REDIS_CONN.setex(cache_key, 3600, json.dumps(result))

效果:缓存命中率 40%,响应时间降低 60%


踩坑经验总结

坑 1:Peewee ORM 的坑

问题execute_sql(commit=True) 在 Peewee 4.0 中报错

原因:Peewee 4.0 移除了 commit 参数

解决

# 错误写法cursor = db.execute_sql(sql, params, commit=True)# 正确写法cursor = db.execute_sql(sql, params)# Peewee 自动提交

坑 2:流式输出未消费

问题:组件 yield 输出,但调用者未消费,导致流式内容丢失

原因:Python generator 需要显式消费

解决

# 错误写法await component.invoke(**kwargs)# 正确写法async for chunk in component.invoke(**kwargs):    yield chunk  # 必须消费

坑 3:工具调用 JSON 解析失败

问题:LLM 返回的 arguments 格式错误,导致 JSON 解析失败

原因:流式返回可能截断、格式不规范

解决

import json_repair# 容错解析try:    args = json.loads(tool_call.function.arguments)except:    args = json_repair.loads(tool_call.function.arguments)

坑 4:变量表达式冲突

问题:用户输入包含 {{ }},被误识别为变量

原因:正则匹配不够严格

解决

# 更严格的正则pat = re.compile(r"\{\{([a-zA-Z:0-9]+@[A-Za-z0-9_.-]+|sys\.[A-Za-z0-9_.]+|env\.[A-Za-z0-9_.]+)\}\}")# 提供转义语法# 用户输入 \{\{literal\}\} → {{literal}}

与其他 RAG 框架对比

对比 LangChain

维度
RAGFlow
LangChain
定位
生产级 RAG 引擎
通用 LLM 应用框架
架构
单体应用(可拆分)
模块化组件
文档解析
自研 Deepdoc(强)
依赖第三方库
可视化编排
内置画布 UI
需 LangGraph
部署难度
Docker 一键部署
需自行组装
学习曲线
中等(需理解整体架构)
平缓(按需学习)

总结:RAGFlow 更适合"开箱即用"的生产场景,LangChain 更适合灵活定制的应用开发。


对比 LlamaIndex

维度
RAGFlow
LlamaIndex
核心优势
文档解析 + 检索一体化
索引优化 + 查询引擎
检索策略
向量 + 关键词 + Reranking
多种索引结构(树、图、关键词)
知识图谱
支持(GraphRAG)
支持(KnowledgeGraphIndex)
社区生态
国内为主
国际化

总结:RAGFlow 的文档解析能力更强,LlamaIndex 的检索策略更丰富。


对比 Dify

维度
RAGFlow
Dify
定位
RAG 引擎
LLM 应用开发平台
工作流编排
Agent 画布
Workflow 编排
模型支持
30+ LLM 提供商
50+ LLM 提供商
多模态
OCR/CV/ASR
以文本为主
开源协议
Apache 2.0
Apache 2.0

总结:RAGFlow 偏重 RAG 场景,Dify 偏重通用 LLM 应用开发。


未来发展趋势预测

趋势 1:多模态 RAG

现状:以文本为主,图片/视频作为补充

未来

  • 图文混排检索(检索文档中的图表、示意图)
  • 视频内容理解(提取关键帧、时间轴摘要)
  • 音频内容索引(会议录音、播客内容)

RAGFlow 现状:已支持 OCR、CV、ASR,但尚未深度整合


趋势 2:知识图谱 + 向量检索深度融合

现状:两者独立,浅层混合

未来

  • 图谱引导的向量检索(利用关系约束)
  • 向量增强的图谱推理(相似实体关联)
  • 端到端训练(联合优化)

RAGFlow 现状:已支持 GraphRAG,但图谱查询能力有限


趋势 3:Agent 自主规划与工具编排

现状:预设工具调用流程

未来

  • 动态工具选择(根据问题自动选择工具)
  • 工具链自动组合(多工具协同)
  • 自我反思与修正(工具调用失败后自动调整)

RAGFlow 现状:支持工具调用,但编排能力较弱


趋势 4:个性化 RAG

现状:统一检索策略

未来

  • 用户画像驱动(根据用户偏好调整检索)
  • 动态权重调整(不同用户不同 Reranking 策略)
  • 反馈学习(从用户反馈中优化检索)

RAGFlow 现状:支持多租户隔离,但个性化能力有限


学习心得与建议

心得 1:源码阅读的正确姿势

错误做法

  • 从第一行开始顺序阅读
  • 试图理解每一行代码
  • 不运行、不调试、不改代码

正确做法

  1. 先跑通
    :部署运行,熟悉功能
  2. 抓主线
    :从入口函数开始,追踪核心流程
  3. 画图
    :边读边画架构图、流程图
  4. 写注释
    :在关键代码处添加自己的理解
  5. 改代码
    :尝试修改代码验证理解

心得 2:技术选型的思考框架

三问法

  1. 为什么这样设计?
    (理解设计意图)
  2. 有哪些替代方案?
    (对比优劣)
  3. 如果我来设计会怎样?
    (锻炼架构思维)

示例

  • 为什么 RAGFlow 选择 DSL (JSON) 而不是 Python 代码? 
    • 答:前端可视化编辑 + 数据库存储 + 跨语言通用
  • 替代方案:YAML 配置、可视化流程图(Node-RED 风格)
  • 如果我来设计:结合 YAML(可读性)+ JSON(存储格式)

心得 3:从源码到生产的距离

源码理解 ≠ 生产能力

差距

  • 源码:理想情况、Happy Path
  • 生产:异常处理、性能优化、监控告警

弥合方法

  1. 读 Issue
    :查看 GitHub Issues 中的 Bug 报告
  2. 看配置
    :生产环境配置与默认配置的差异
  3. 测性能
    :压测发现瓶颈
  4. 观监控
    :Prometheus/Grafana 监控指标

心得 4:技术博客的价值

写作即思考

  • 强迫自己理清逻辑
  • 发现理解漏洞
  • 建立知识体系

建议

  1. 每周总结
    :不要等学完再写
  2. 画图为主
    :一张图胜过千言万语
  3. 代码片段
    :关键实现必须贴代码
  4. 对比分析
    :与他人方案对比,加深理解

写在最后

十周时间,我们完成了对 RAGFlow 的全面剖析。从宏观架构到微观实现,从设计模式到性能优化,从技术决策到踩坑经验,这个系列记录了我们的学习轨迹。

RAGFlow 的核心价值

  • 生产级
    :开箱即用,覆盖完整 RAG 流程
  • 可扩展
    :插件化设计,易于二次开发
  • 高性能
    :异步流式、连接池、缓存优化
  • 多模态
    :OCR/CV/ASR 一体化支持

我们的收获

  • 理解了现代 RAG 系统的完整架构
  • 掌握了文档解析、向量检索、LLM 集成等核心技术
  • 学会了源码阅读、架构设计、性能优化的方法论
  • 积累了踩坑经验,避免未来重复踩坑

下一步

  • 实践
    :基于 RAGFlow 构建自己的 RAG 应用
  • 贡献
    :向开源社区贡献代码或文档
  • 探索
    :学习其他 RAG 框架,对比优劣

感谢

  • 感谢 RAGFlow 团队的开源贡献
  • 感谢读者的陪伴与反馈
  • 感谢开源社区的共享精神

愿每一位开发者都能在开源世界中找到属于自己的技术之路。


基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-07 09:53:47 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/721557.html
  2. 运行时间 : 0.103242s [ 吞吐率:9.69req/s ] 内存消耗:4,746.10kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2ede83bec981f57a6d1c707067d381ff
  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.000486s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000775s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000323s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000264s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000476s ]
  6. SELECT * FROM `set` [ RunTime:0.000209s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000620s ]
  8. SELECT * FROM `article` WHERE `id` = 721557 LIMIT 1 [ RunTime:0.004238s ]
  9. UPDATE `article` SET `lasttime` = 1780797227 WHERE `id` = 721557 [ RunTime:0.012010s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000287s ]
  11. SELECT * FROM `article` WHERE `id` < 721557 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000425s ]
  12. SELECT * FROM `article` WHERE `id` > 721557 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000435s ]
  13. SELECT * FROM `article` WHERE `id` < 721557 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001429s ]
  14. SELECT * FROM `article` WHERE `id` < 721557 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000621s ]
  15. SELECT * FROM `article` WHERE `id` < 721557 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000776s ]
0.104957s