当前位置:首页>python>梦纳思家庭宝MNS系列(三):Python Flask 后端架构详解

梦纳思家庭宝MNS系列(三):Python Flask 后端架构详解

  • 2026-07-02 16:44:47
梦纳思家庭宝MNS系列(三):Python Flask 后端架构详解
在前两篇文章中,我们已经对梦纳思家庭财富管理系统有了整体的认知,并介绍了前端技术选型与移动端开发要点。从本文开始,我们将深入技术腹地,详细剖析后端服务的架构设计与实现细节。作为一个面向多端应用的后端系统,梦纳思采用了 Python Flask 框架构建 RESTful API 服务,配合 PostgreSQL 数据库与 Redis 缓存,支撑起整个系统的数据流转与业务逻辑。本文将带领读者从项目结构出发,逐步深入三层架构设计理念,最终理解核心组件的职责划分与性能优化策略。

一、项目结构:清晰分层的模块化设计

打开后端项目根目录,我们会看到一个结构清晰的 Python Flask 应用。顶层包含三个核心入口文件:app.py 作为应用启动的主文件,db.py 负责数据库连接配置,requirements.txt 则定义了所有 Python 依赖包。围绕这三个入口文件,整个后端代码按照职责划分为四个主要层级。
api 目录是整个后端对外提供服务的窗口,其中 v1 子目录按照业务域进一步划分为多个蓝图模块。这种按业务域划分蓝图的设计方式,使得接口职责明确,便于后续维护与扩展。
models 目录存放所有 SQLAlchemy ORM 模型定义,每个模型对应数据库中的一张表。services 目录包含业务逻辑层的实现,repositories 目录则封装了数据访问层的通用查询方法。utils 目录提供各类工具函数,如加密解密、分页处理、日期格式化等通用能力。
这种目录结构体现了良好的分层思想:API 层负责接收请求与返回响应,服务层处理业务逻辑,仓储层封装数据库访问,模型层定义数据结构。每一层都有明确的职责边界,层与层之间通过定义良好的接口交互,既保证了代码的可维护性,也为后续的单元测试与模块替换提供了便利。

二、三层架构:从 API 到数据库的请求之旅

梦纳思后端采用了经典的分层架构设计,但在此基础上增加了一个独立的仓储层,形成了四层结构:API 层、服务层、仓储层与模型层。这种设计在保持架构清晰的同时,也为复杂业务逻辑提供了足够的抽象层次。

2.1 API 层:请求入口与响应出口

API 层是整个后端架构的最上层,直接与客户端通信。它的工作流程可以概括为:接收请求、参数校验、调用服务层、返回响应。以家庭成员管理为例,当客户端发送获取成员列表的请求时,API 层首先解析请求参数,验证必填字段与数据格式,然后调用服务层的方法获取数据,最后将结果封装成统一的响应格式返回给客户端。
在响应格式上,系统采用了一套标准的 JSON 结构:code 字段表示业务状态码,message 字段描述操作结果,data 字段承载实际数据。状态码的设计遵循 HTTP 语义与业务需求相结合的原则,200 表示成功,400 表示参数错误,401 表示未认证,403 表示无权限访问,404 表示资源不存在,500 表示服务器内部错误。这套状态码体系既便于前端统一处理各类异常,也为后续的问题排查提供了清晰的方向。
蓝图的设计也体现了领域驱动设计的思想。每个业务域对应一个独立的蓝图,拥有自己的 URL 前缀与视图函数。以预算管理为例,所有与预算相关的接口都以 /v1/budgets 为前缀,这样的设计使得 API 结构一目了然,也便于实现接口的版本管理与灰度发布。

2.2 服务层:业务逻辑的封装中心

如果说 API 层是后端的门面,那么服务层就是真正的业务核心。这一层承担着所有业务逻辑的处理工作,包括数据校验、业务规则计算、多表关联查询等。以财务统计为例,服务层需要计算某个时间范围内的收入支出总额、各分类占比、同比环比变化趋势等复杂指标,这些计算逻辑都被封装在 FinanceService 中。
服务层的另一个重要职责是提供统一的 CRUD 操作模板。每个服务类都继承自 BaseService 基类,BaseService 定义了通用的增删改查方法:create 方法处理新建记录,update 方法处理数据更新,delete 方法处理软删除或硬删除,get_by_id 方法根据主键获取单条记录,get_all 方法获取列表数据。这种模板模式避免了大量重复代码,也保证了 CRUD 操作的一致性。
服务层还负责处理业务层面的事务控制。当一个业务操作涉及多张表的数据变更时,服务层会在方法入口开启事务,确保所有变更要么全部成功,要么全部回滚。例如创建转账记录时,系统需要同时扣减源账户余额、增加目标账户余额、生成两条交易记录,这些操作必须在同一个事务中完成,以保证数据的一致性。

2.3 仓储层:数据访问的抽象封装

仓储层在服务层与数据库之间架起了一座桥梁。它的主要职责是封装所有与数据库交互的细节,为服务层提供干净的数据访问接口。仓储层的存在,使得服务层可以专注于业务逻辑,而不必关心 SQL 语句的编写或数据库连接的管理。
在实现上,仓储层通过 SQLAlchemy 的查询构建器提供灵活的查询能力。它定义了丰富的查询方法:按字段精确匹配、按条件组合查询、按时间范围筛选、按分页参数获取等。这些方法返回的都是已映射为模型对象的查询结果,服务层可以直接使用,无需进行额外的数据转换。
仓储层还承担着查询性能优化的责任。它会在查询时自动处理关联数据的预加载,避免 N+1 查询问题。例如获取账户列表时,如果同时需要显示账户类型信息,仓储层会使用 join 或 subqueryload 方式一次性加载关联数据,而不是逐条发起额外的查询。这种设计使得服务层的代码保持简洁,同时保证了查询效率。

2.4 模型层:数据结构的规范化定义

模型层是整个架构的基石,它定义了系统中所有数据实体的结构。每一个模型类对应数据库中的一张表,类的属性对应表的字段,类之间的关系对应表之间的关联。梦纳思系统涵盖了丰富的数据模型:Family 家庭模型存储家庭基本信息,FamilyMember 成员模型记录每个家庭成员的详情,Account 账户模型管理各类资产账户,Category 分类模型支撑收支分类体系,Transaction 交易模型记录每一笔收支,Budget 预算模型定义月度预算额度,Goal 目标模型规划财务目标,Liability 债务模型管理各类负债,Alert 预警模型配置与记录各类提醒。
每个模型都遵循统一的规范:主键 id 自动生成,创建时间与更新时间自动维护,软删除标记便于数据恢复。模型之间通过外键建立关联:账户归属于家庭,成员归属于家庭,交易归属于账户与分类,预算归属于家庭与分类。这种关联设计既保证了数据的完整性,也为后续的级联操作提供了基础。

三、核心组件详解:服务层的核心角色

在四层架构中,服务层是业务逻辑最集中的地方,而其中又有几个核心组件承担着关键职责。下面我们深入解析几个最重要的服务组件。

3.1 BaseService:通用能力的抽象基类

BaseService 是所有业务服务的基类,它将跨服务的通用能力提取到一处,避免重复实现。通用能力首先包括 CRUD 操作的标准化模板。create 方法接收待创建的数据字典,验证必填字段后插入数据库,返回创建成功的对象。update 方法根据主键获取现有记录,合并更新数据后保存。delete 方法执行软删除,将 is_deleted 标记设为 true。get_by_id 方法从数据库获取单条记录,不存在时抛出特定异常。get_all 方法支持分页与排序参数,返回符合条件的数据列表。
其次是分页处理的统一封装。在实际业务中,几乎所有列表接口都需要分页支持。BaseService 提供了 get_paginated 方法,接收 page 与 page_size 参数,自动计算 offset 与 limit,返回分页结果与总数。前端据此可以渲染分页导航,告知用户总数据量与当前页码。
此外还有异常处理的统一捕获。服务层可能抛出各种业务异常,如资源不存在、数据已删除、状态不允许操作等。BaseService 定义了统一的异常转换逻辑,将各类内部异常转换为用户友好的错误信息,便于 API 层统一处理与返回。

3.2 FinanceService:财务统计的计算中心

家庭财富管理的核心在于财务数据的统计分析,FinanceService 承担了这项重任。它的主要功能包括收支汇总计算、分类统计、趋势分析等。
收支汇总计算是最基础的功能。给定时间范围与家庭标识,FinanceService 会聚合该时间段内所有交易记录,计算总收入、总支出与结余。计算过程会排除已删除的记录,只统计正常状态的数据。结余等于收入减去支出,如果为正则表示盈余,为负则表示亏损。
分类统计揭示了资金流向的细节。系统会按收入分类与支出分类分别汇总,帮助用户了解钱从哪儿来、花到哪儿去。每个分类的金额与占比都会被计算出来,占比可以帮助用户快速识别主要的收入来源或支出大类。在饼图中展示分类占比是最常见的可视化方式。
趋势分析则从时间维度观察财务状况的变化。系统支持按月、按季度、按年汇总数据,生成趋势折线图。用户可以直观看到收入是否稳定增长、支出是否在合理范围内波动。同比与环比数据可以排除季节性因素,更准确地判断财务状况的变化趋势。

3.3 AccountService:账户全生命周期管理

账户是资金流动的载体,AccountService 负责账户的创建、查询、更新与删除,以及最核心的余额更新逻辑。
账户创建时,系统会校验账户名称是否重复、账户类型是否有效、初始余额是否合理。新账户的创建会记录所属家庭、账户类型、币种、备注等信息。创建成功后,该账户即可用于后续的收入、支出与转账操作。
余额更新是账户管理的核心难点。余额变更的来源有两种:手动调整与交易触发。手动调整用于更正余额或处理账务差错,需要记录调整原因与操作人员。交易触发则由系统自动完成,当交易记录创建时,关联账户的余额会相应增减。这个联动逻辑需要在事务中完成,以保证余额与交易记录的一致性。
账户查询支持多条件筛选:按账户类型过滤、按余额范围筛选、按状态查询启用的或停用的账户。查询结果可以按余额降序排列,帮助用户快速找到资金集中的账户。

3.4 TransactionService:交易记录的全流程管控

交易记录是系统中最核心的数据资产,每一次收入、支出、转账都会生成相应的交易记录。TransactionService 负责交易的全流程管理。
新建交易时,系统首先校验账户是否存在、分类是否有效、金额是否为正数等基础条件。对于支出交易,还会检查账户余额是否充足,防止透支。接下来根据交易类型更新账户余额:收入增加余额,支出减少余额。这些操作需要在同一个事务中完成,任何一步失败都会导致整体回滚。
交易修改与删除相对复杂。修改交易时,如果金额发生变化,需要逆向调整原账户余额,再按新金额重新调整,这要求系统记录原交易的金额与账户信息。删除交易时,直接扣减账户余额会存在问题,更安全的做法是标记为已删除,在统计时排除,但保留原记录用于审计。
交易查询是最常用的功能,系统支持按时间范围、账户、分类、金额区间、备注关键词等多维度查询。结果按时间倒序排列,便于查看最新发生的交易。大量交易数据的查询需要分页处理,同时生成汇总信息供前端展示。

3.5 UserService:用户认证与权限管理

作为多租户系统,每个家庭是独立的数据单元,而每个用户可以归属于多个家庭。UserService 负责用户注册、登录、密码校验与家庭关联管理。
用户注册时,系统会验证用户名唯一性与密码复杂度。密码不会明文存储,而是通过哈希算法加盐后保存。登录时,系统校验用户名与密码是否匹配,验证通过后生成 JWT 令牌返回给客户端。令牌包含用户标识与过期时间,客户端在后续请求中携带令牌以完成身份认证。
家庭关联管理允许用户切换当前访问的家庭上下文。同一用户可能管理多个家庭,通过家庭切换功能可以进入不同家庭的数据空间。用户也可以在家庭中扮演不同角色,如管理员或普通成员,角色决定了可以使用的功能范围与数据权限。

四、性能优化:保障系统稳定运行

后端服务需要支撑多端客户端的并发访问,性能优化是保障系统响应速度与稳定性的关键。梦纳思后端从数据库连接、请求限流、查询效率三个维度进行了系统性优化。
数据库连接池的配置是性能优化的基础。数据库建立连接是一个耗时的操作,连接池复用已建立的连接,避免了频繁建连的开销。开发环境配置较小的连接池,以节约资源;生产环境则配置较大的连接池,以支撑更高的并发请求。同时设置连接的最大生命周期,防止连接长期占用导致的资源泄漏。
请求限流是保障服务可用性的重要手段。高并发场景下,如果客户端频繁发起请求,可能会耗尽服务器资源,导致服务响应缓慢甚至崩溃。Redis 限流机制在 API 层拦截过多的请求,根据客户端标识与时间窗口计算请求频率。超出阈值的请求会被直接拒绝,返回限流提示。限流阈值根据环境区分配置,开发环境宽松以方便调试,生产环境严格以保护系统。
查询优化直接决定了接口响应速度。最重要的原则是避免一次性加载大量数据,分页查询成为标配。列表接口必须支持 page 与 page_size 参数,结果严格限制在分页范围内。对于需要排序的查询,建立合适的索引以加速排序操作。关联查询使用 SQLAlchemy 的预加载功能,一次性获取关联数据,避免 N+1 查询问题。统计类查询优先使用数据库的聚合函数在 SQL 层面完成计算,减少应用层的数据处理负担。

五、总结

本文从项目结构出发,逐步深入剖析了梦纳思后端的技术架构与核心组件设计。四层架构清晰划分了各层职责:API 层负责请求响应、服务层封装业务逻辑、仓储层抽象数据访问、模型层定义数据结构。BaseService 提供了通用的 CRUD 模板,FinanceService 支撑了复杂的财务统计,AccountService 与 TransactionService 管理了核心的账户与交易数据,UserService 保障了用户认证与家庭权限。
在分层架构的基础上,团队通过连接池复用、Redis 限流、分页查询等手段持续优化性能。这些优化措施看似简单,却是保障系统在高并发场景下稳定运行的关键。
对于希望参与项目开发的读者,建议从自己熟悉的模块入手,先理解该模块的 API 接口与服务实现,再逐步扩展到仓储层与模型层。理解数据如何在各层之间流转,是掌握整个架构的关键。希望本系列文章能够帮助读者建立对梦纳思后端架构的全面认知,为后续的深入开发打下基础。

最新文章

随机文章

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