当前位置:首页>学习笔记>Day 11 学习笔记:工程实践——用 Python 跑通从本体查询到 LLM 回答的完整链路

Day 11 学习笔记:工程实践——用 Python 跑通从本体查询到 LLM 回答的完整链路

  • 2026-06-01 17:33:16
Day 11 学习笔记:工程实践——用 Python 跑通从本体查询到 LLM 回答的完整链路

Day 11 学习笔记:工程实践——用 Python 跑通从本体查询到 LLM 回答的完整链路

写在前面

前十天我们掌握了理论、工具和方法论。今天进入最硬核的一环:写代码。不是简单的"调用 API",而是把前面所有知识串成一条自动化流水线。从读取 OWL 本体文件,到用推理机推导隐含知识,到用 SPARQL 查询相关事实,到拼接结构化提示,最后调用 LLM 生成带推理链条的回答。这条链路跑通的那一刻,你的 Agent 才真正拥有了"知识底座"。

一、为什么要用 Python 而不是 Protégé?

Protégé 是可视化编辑器,适合设计和维护本体,但它不适合自动化。真实的 AI Agent 需要 7 乘 24 小时运行,需要自动响应用户的每一个提问,需要在毫秒内完成查询和推理。这些都需要代码来实现,而不是人工点击鼠标。

Python 是本体工程领域最友好的语言。rdflib 库能解析所有主流的 RDF 格式(Turtle、XML、JSON-LD)。Owlready2 库能加载 OWL 文件并运行推理机。requests 库能调用任何 LLM 的 API。这三个库加在一起,就能搭建一个最小可用的"本体驱动型 Agent"。

二、rdflib 基础:加载、遍历与 SPARQL 查询

rdflib 是 Python 世界里处理 RDF 数据的瑞士军刀。它的核心概念很简单:一个 Graph 对象就是一张知识图谱,里面装满了三元组。每个三元组由 Subject、Predicate、Object 组成。

第一步是加载本体文件。从 Protégé 导出的 farmland-mini-ontology.owl 可以直接被 rdflib 读取。代码逻辑是:导入 rdflib 的 Graph 和 Namespace,创建一个 Graph 实例,调用 parse 方法加载文件。如果文件路径正确,parse 方法会在瞬间完成,不会有任何报错。如果报错,通常是文件编码问题(OWL 文件默认 UTF-8,不要改成其他编码)或者命名空间声明缺失。

第二步是遍历所有三元组。调用 graph.triples 方法,传入三个 None 参数,表示"查询所有"。这会返回一个迭代器,你可以遍历打印每一个三元组。遍历三元组的意义在于:确认文件确实被正确加载了,同时熟悉自己的本体里到底有哪些类和属性。

第三步是 SPARQL 查询。rdflib 支持完整的 SPARQL 1.1 语法。SPARQL 是图数据库的 SQL,语法结构是 SELECT 指定返回变量,WHERE 里写三元组模式。比如查询所有农田及其土壤 PH 值,SELECT 变量是 farm 和 ph,WHERE 里写 farm 属于 Farmland,farm 的 soilPH 属性值是 ph。执行查询后,用 for 循环遍历结果,每一行是一个元组,对应 SELECT 中的变量顺序。

SPARQL 的强大之处在于它能做复杂查询。比如查询 PH 值大于 6.5 的农田,需要 FILTER 条件。查询种植玉米的农田,需要两个三元组模式通过同一个 farm 变量连接。这些查询语句对应的就是 Agent 在实际运行中要回答的用户问题。

三、Owlready2:OWL 推理机的 Python 接口

rdflib 擅长数据操作,但不擅长 OWL 推理。如果你查询"田 A 的类型是什么",rdflib 只会返回你显式声明的类型 HighStandardFarmland。它不会自动推断出田 A 也是 Farmland 的实例,因为 rdflog 默认不做描述逻辑推理。

Owlready2 库解决了这个问题。它能加载 OWL 文件,并调用内置的 HermiT 推理机(与 Protégé 用的是同款)。推理完成后,Owlready2 会自动补全所有隐含的类型和属性关系。

使用流程是:导入 owlready2 的 get_ontology 和 sync_reasoner,加载本体文件,调用 sync_reasoner 启动推理机,然后查询实例。推理完成后,你会发现田 A 的 is_a 属性里不仅包含 HighStandardFarmland,还自动包含了 Farmland。这就是 subClassOf 关系的逻辑推导结果。

Owlready2 的另一个强大功能是修改本体。你可以在 Python 代码中创建新的类、新的属性、新的实例,就像直接操作数据库一样。修改后保存回 OWL 文件,下次 Protégé 打开时能看到所有更新。这在本体需要动态更新的场景(比如新增一种作物品种)中非常有用。

四、完整链路:从用户提问到 LLM 回答

现在我们有了两个核心能力:用 rdflib 或 Owlready2 查询本体,用 requests 调用 LLM API。接下来要把它们串成一条流水线。

这条流水线分为五个阶段。

第一阶段是问题解析。用户的自然语言提问需要被映射到本体概念上。简单的方式是用关键词匹配:如果问题中包含"田 A"或"FieldA",就提取出来作为主语。如果包含"适合种什么"或"推荐",就识别为作物推荐意图。在工业级系统中,这个阶段用 NLP 模型来做意图识别和槽位填充。但在我们的学习项目中,先用正则表达式或简单的字符串匹配就够了。

第二阶段是本体查询。根据解析出来的意图和实体,生成对应的 SPARQL 查询或 Owlready2 查询。比如用户问"田 B 适合种什么",系统需要查询田 B 的 PH 值、土壤类型、所在区域,然后查询土壤类型适合种植哪些作物,再查询这些作物的耐寒性是否匹配区域气候。这些查询可能涉及 3 到 5 个 SPARQL 语句,需要按顺序执行。

第三阶段是事实拼接。把所有查询结果组织成结构化的"已知事实"列表。每条事实一行,格式统一。比如已知事实一:田 B 的土壤 PH 值为 5.2。已知事实二:田 B 的土壤类型为酸性土壤。已知事实三:酸性土壤适合种植土豆、蓝莓、茶树。已知事实四:田 B 所在区域的冬季均温为零下 15 摄氏度。已知事实五:蓝莓的耐寒性不足以抵抗零下 15 摄氏度的低温。这些事实直接来自本体查询结果,没有经过 LLM 的任何加工,保证了事实的准确性。

第四阶段是结构化提示组装。把已知事实列表嵌入到 Prompt 模板中。模板包含四个部分:角色设定(你是一位农业专家)、已知事实(上面拼接的列表)、推理任务(请基于以上事实推断田 B 最适合种植的作物并给出推理链条)、输出格式(先给结论,再给推理步骤,最后给置信度)。完整的 Prompt 通常会有 500 到 1000 个 Token,取决于事实的数量和详细程度。

第五阶段是 LLM 调用与返回。使用 requests 库向 LLM API 发送 POST 请求,包含完整的 Prompt。LLM 返回的文本中应该包含结论(推荐土豆)、推理链条(PH 5.2 属于酸性土壤,酸性土壤适合土豆,排除蓝莓因为不耐寒)、置信度(高)。最后把 LLM 的回答格式化后返回给用户。

五、错误处理与边界情况

真实的系统不会总是顺利运行。你需要预设至少四种错误情况。

第一种是查询无结果。用户问"田 C 适合种什么",但本体中没有田 C 这个实例。这时候不能直接把空结果传给 LLM,否则 LLM 可能会 hallucinate 编造一个答案。正确的处理方式是:捕获空结果异常,返回明确的错误信息,比如"系统中未找到田 C 的数据,请确认农田编号是否正确"。

第二种是 LLM API 超时或失败。网络抖动、API 限流、模型过载都可能导致调用失败。你需要设置重试机制(比如失败后立即重试一次,再失败则降级到缓存的默认回答),以及超时控制(设置 30 秒超时,避免用户无限等待)。

第三种是 LLM 回答格式不符合预期。你要求它"先给结论再给推理步骤",但它可能只给了一句话,或者加了无关内容。你需要在代码中增加格式校验:检查返回文本中是否包含"结论"关键词,是否包含编号列表,如果不符合则再次调用 LLM 并要求"严格按指定格式输出"。

第四种是推理冲突。本体查询返回的事实本身可能存在矛盾。比如田 B 的 PH 值被记录为 5.2(酸性),但又被记录为适合种植玉米(玉米通常需要中性土壤)。这种矛盾来自数据采集错误,但 Agent 需要能检测到它。可以在拼接事实时增加一致性校验:如果存在明显矛盾,在 Prompt 中标注"注意:以下事实存在矛盾,请谨慎推理",而不是隐藏矛盾。

六、今日实战:手写一个最小可用 Agent

今天的动手任务是:用 Python 写一段 150 行以内的代码,实现完整的"用户提问到结构化回答"链路。

代码结构建议如下。首先导入库:rdflib、owlready2、requests、json。然后加载本体:用 rdflib.Graph 加载 OWL 文件,或用 owlready2.get_ontology 加载。接着定义问题解析函数:输入字符串,返回字典(意图、实体、参数)。然后定义本体查询函数:根据解析结果,执行 SPARQL 或 Owlready2 查询,返回事实列表。接着定义提示组装函数:接收事实列表,返回完整的结构化 Prompt 字符串。然后定义 LLM 调用函数:接收 Prompt,调用 API,返回回答文本。最后定义主函数:接收用户输入,依次调用上述函数,处理异常,格式化输出。

一个最小化的示例场景是:用户输入"田 B 适合种什么"。系统解析出实体是田 B,意图是作物推荐。系统查询田 B 的 PH 值(5.2)、土壤类型(酸性土壤)、区域(东北)。系统查询酸性土壤适合种植的作物(土豆、蓝莓、茶)。系统查询东北区域冬季温度(零下 15 度)以及蓝莓耐寒性(不足)。系统把所有事实拼成 Prompt。系统调用 LLM。LLM 返回:"结论:推荐种植土豆。推理步骤:第一步,田 B 的 PH 值为 5.2,属于酸性土壤。第二步,酸性土壤适合种植的作物包括土豆、蓝莓、茶。第三步,田 B 所在东北区域冬季均温为零下 15 度。第四步,蓝莓耐寒性不足以抵抗零下 15 度低温,因此排除蓝莓。第五步,茶在东北冬季可能面临冻害风险,综合推荐土豆。置信度:高。"

这段代码不需要完美,但它需要能跑通。跑通的那一刻,你就完成了从"理论学习者"到"工程实践者"的转变。

七、性能优化与工程考量

150 行的原型代码能证明概念,但生产环境需要更多考量。

首先是查询性能。如果本体文件很大(几万个实例),rdflib 的内存查询会变慢。解决方案是把数据迁移到 RDF Store(如 Apache Jena 或 GraphDB)或图数据库(Neo4j),用它们的专业索引和查询引擎替代 rdflib 的内存遍历。

其次是推理开销。Owlready2 的 HermiT 推理机在每次 sync_reasoner 时都会重新计算所有隐含关系。如果本体频繁更新,推理开销会很大。解决方案是:只在数据更新后触发一次推理,把推理结果缓存到数据库,查询时直接读缓存。

再次是 LLM 成本。每次调用都要消耗 Token。如果用户问的是常见问题(比如"东北黑土区适合种什么"),可以预先把 LLM 的回答生成好,存入缓存,下次直接返回。只有遇到罕见问题或个性化查询(比如涉及具体田块编号的),才调用 LLM。

最后是并发处理。如果多个用户同时提问,Agent 需要能并行处理。Python 的 asyncio 库可以很好地解决这个问题。每个用户请求创建一个异步任务,独立执行查询、推理、LLM 调用,互不阻塞。

今日内容概述

Python 是本体工程最友好的自动化语言,rdflib 负责 RDF 数据加载与 SPARQL 查询,Owlready2 负责 OWL 推理机调用与隐含知识推导,requests 负责 LLM API 调用,三者组合可搭建最小可用的本体驱动型 Agent。完整链路分为五阶段:问题解析将用户提问映射到本体概念,本体查询用 SPARQL 或 Owlready2 检索相关事实与规则,事实拼接将查询结果组织为结构化"已知事实"列表,结构化提示组装将事实嵌入角色设定加推理任务加格式约束的模板,LLM 调用生成带结论加推理链条加置信度的回答。工程实践中需预设四种错误处理:查询无结果时返回明确错误而非传空值给 LLM,API 超时失败时设置重试与降级机制,LLM 格式不符时增加校验与二次调用,事实存在矛盾时标注冲突而非隐藏。生产环境需考虑查询性能(迁移至专业图数据库)、推理开销(缓存推理结果)、LLM 成本(常见问答预生成缓存)、并发处理(asyncio 异步架构)。今日核心任务是手写 150 行以内代码,实现从"田 B 适合种什么"到带推理链条的结构化回答的完整自动化链路。

写在最后

今天是你从"学者"变成"工程师"的关键一天。前面的知识都是积木,今天的代码是把积木搭成房子。你可能遇到报错、遇到查询结果为空、遇到 LLM 胡说八道——这些都是正常的。调试的过程本身就是对本体结构的深度理解。当你终于看到终端里打印出那句"推荐种植土豆,推理链条如下"时,你会明白:本体不是写在文件里的概念游戏,它是驱动机器做出正确决策的底层操作系统。

学习检查清单

读完本文后,你可以自检以下十项。

一、我能用 rdflib 加载一个 OWL 文件,并遍历打印所有三元组。

二、我能写一段 SPARQL 查询,查询某农田的土壤 PH 值和种植的作物。

三、我能解释 rdflib 和 Owlready2 的核心分工:rdflib 做数据操作,Owlready2 做 OWL 推理。

四、我能用 Owlready2 加载 OWL 文件并运行 sync_reasoner,验证田 A 是否被自动推断为 Farmland 的实例。

五、我能画出"用户提问到 LLM 回答"的五阶段流水线,并说出每个阶段的输入和输出。

六、我能写出一段包含角色设定、已知事实、推理任务、格式约束四个部分的结构化 Prompt。

七、我能独立写出一段 Python 代码(150 行以内),调用 LLM API 并解析返回结果。

八、我能说出至少四种需要预设的错误处理情况,以及对应的处理策略。

九、我能解释为什么生产环境中不能把 rdflib 作为唯一的查询引擎,以及什么时候需要迁移到 RDF Store 或图数据库。

十、我能独立完成今日实战:针对"田 B 适合种什么"这个问题,手写完整的 Python 代码,从 OWL 文件加载到 LLM 回答输出,全流程跑通。

思考题

第一题:库选择。rdflib 支持 RDF 但不原生支持 OWL 推理,Owlready2 支持 OWL 但不支持 SPARQL。在实际项目中,你会选择只用其中一个,还是两个结合使用?各自负责什么?

第二题:问题解析。用户问"那块酸性地的产量怎么样",系统需要解析出"酸性地"指的是哪块田。如果本体中没有"酸性地"这个标签,只有 PH 值小于 5.5 的农田,你会如何设计查询逻辑?

第三题:提示压缩。当本体查询返回了 50 条事实,LLM 的上下文窗口可能塞不下。你会如何设计一个"事实筛选"策略,只保留与当前问题最相关的事实?

第四题:安全边界。如果 LLM 在回答中建议"使用某种农药",但本体中这种农药和当前作物存在互斥关系(比如某种农药不能用于水稻),你会在哪个阶段拦截这个错误?如何拦截?

第五题:架构演进。今天的代码是"同步串行"执行的:先查询、再拼接、再调用 LLM。如果用户量增大到每秒 100 个请求,这段代码的瓶颈在哪里?用 asyncio 改造时,哪些步骤可以并行,哪些必须串行?

下期预告

Day 12:行业案例深度解析——Palantir 方法论与AI农业实践。我们将跳出技术细节,站在行业视角审视本体论在真实企业中的落地方式。理论和技术最终都要接受产业实践的检验,明天见。

最新文章

随机文章

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