当前位置:首页>Excel>从 EasyExcel 到 Apache Fesod:一个开源项目的接力赛

从 EasyExcel 到 Apache Fesod:一个开源项目的接力赛

  • 2026-04-13 07:17:07
从 EasyExcel 到 Apache Fesod:一个开源项目的接力赛

去年双十一前一周,我在公司后台搞一个“导出一百万行订单”的功能,原来那套老 POI 模板一跑就把测试机内存打到 90% 往上蹦,同事直接在工位喊我:“你这个导出一开像 DOS 攻击一样。”那次之后,我正式把 Excel 处理这件事从「POI 体力活」升级到了「开源项目接力赛」:第一棒是 EasyExcel,现在第二棒,轮到 Apache Fesod 了。

第一棒:EasyExcel 为什么能火这么多年

老 Javaer 都知道,EasyExcel 当年出来,就是为了解决两个痛点:

  1. 写 POI 太累: 手动创建 workbook / sheet / row / cell,一堆下标从 0 开始,还要自己管关闭和内存。
  2. 大文件容易 OOM: 传统的 XSSFWorkbook 一次性把整个文件拉进内存,几十 MB 还行,上百 MB 就开始抖。

EasyExcel 做了两件特别“接地气”的事情:

  • 流式读写:一行一行往外推,配合回调接口,不用一次性把所有数据装进内存。
  • 注解建模:写个简单的 Java Bean,加上 @ExcelProperty("列名") 就能读写,和 ORM 那套思路差不多。

像以前我导出订单列表,大概是这样写的:

// 订单导出模型@DatapublicclassOrderExportRow{@ExcelProperty("订单号")private String orderNo;@ExcelProperty("用户ID")private Long userId;@ExcelProperty("下单时间")@DateTimeFormat("yyyy-MM-dd HH:mm:ss")private LocalDateTime createdAt;@ExcelProperty("实付金额")private BigDecimal paidAmount;}
// EasyExcel 导出publicvoidexportWithEasyExcel(HttpServletResponse response, List<OrderExportRow> rows)throws IOException {    String fileName = URLEncoder.encode("订单列表.xlsx", StandardCharsets.UTF_8.name());    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");    response.setCharacterEncoding("utf-8");    response.setHeader("Content-disposition""attachment;filename=" + fileName);    EasyExcel.write(response.getOutputStream(), OrderExportRow.class)            .sheet("订单")            .doWrite(rows);}

这套东西在业务早期很好用,而且生态成熟、资料多,是很多 Java 项目的默认选型。

但是,用得越久,你越会感受到一些现实问题:比如大文件边界性能、历史包袱、兼容性问题,以及大家经常吐槽的“某些 bug 修了又复活”,这也是后来 FastExcel / Fesod 接棒的背景之一。

FastExcel 到 Fesod,这根接力棒怎么传的

你在 GitHub 上打开 Apache Fesod 的仓库,会看到一句话:

Fast. Easy. Done. Processing spreadsheets without worrying about large files causing OOM.

这句话基本把它的目标写死了:还是做 Excel,但要比以前更快、更省内存、更省心。

几个关键点简单说下:

  • Fesod 是一个 高性能、内存友好的 Java 表格处理库,专门干读写 Excel / CSV 这类文档的活。
  • 目前底层还是基于 POI,但在读写路径、流式处理上做了很多封装和优化。
  • 项目已经进入 Apache 孵化器,现在的官方名字叫 **Apache Fesod (Incubating)**。
  • 很多核心贡献者,其实早年就参与过 EasyExcel / FastExcel 生态,对“Excel + Java”这块的坑非常熟悉。

而且,有一篇中文博客写得很直白:FastExcel(现在的 Fesod)支持无缝从 EasyExcel 迁移,兼容 EasyExcel 的使用方式,还在性能和功能上做了增强,比如“读取指定行数”“Excel 转 PDF”等特性。

你可以把这件事理解成:

EasyExcel 把「Excel 处理这件事」在国内 Java 圈做火了,FastExcel 在原基础上做性能优化和补坑,最后 Fesod 把这条路线捐给了 Apache,变成一个真正社区化、开放治理的项目。

这就是标题里那句“开源项目的接力赛”。

第二棒:Apache Fesod 具体能给我们带来啥

不讲虚的,就从实际开发者视角,看三个维度:性能、易用性、工程化。

1)性能 & 内存

官方文档的定位写得很清楚:高性能、内存友好,专攻大规模表格数据

结合实际体验,大致是这几类提升:

  • 大量行(几十万、上百万)读写时,GC 压力明显比传统 POI 小;
  • 流式读取做得比较扎实,一行行推给你,不容易一口气把 JVM 撑爆;
  • 针对常见的“表头复杂、多 Sheet、多格式混用”场景,做了不少细节优化(比如样式合并、日期格式、转换器等)。

在 GitHub issue 和 milestone 里也能看到,很多任务就是“修 EasyExcel 里遗留的 bug”“进一步优化性能”等。

2)API 易用性

Fesod 的 API 设计,明显是延续 EasyExcel + FastExcel 那一脉的:

  • 使用 注解 映射列;
  • 通过 监听器 处理每一行;
  • 链式调用 read / write,上手成本很低。

看个读取示例,感受一下它的风格:

// 定义数据模型publicclassUserImportRow{@ExcelProperty("用户ID")private Long userId;@ExcelProperty("昵称")private String nickname;@ExcelProperty("创建时间")private LocalDateTime createdAt;}// 实现监听器publicclassUserRowListenerimplementsReadListener<UserImportRow{privatefinal UserService userService;publicUserRowListener(UserService userService){this.userService = userService;    }@Overridepublicvoidinvoke(UserImportRow data, AnalysisContext context){// 每读到一行就落库 / 校验        userService.saveOrUpdate(data);    }@OverridepublicvoiddoAfterAllAnalysed(AnalysisContext context){        System.out.println("用户导入完成");    }}
// 使用 Fesod 读取publicvoidimportUsers(MultipartFile file, UserService userService)throws IOException {try (InputStream in = file.getInputStream()) {        FesodSheet.read(in, UserImportRow.classnewUserRowListener(userService))                .sheet()      // 默认第一个 sheet                .doRead();    }}

是不是很眼熟?如果你用过 EasyExcel,这种写法几乎不用学习成本。([GitHub][2])

3)工程化 & 合规

这块是 Apache 项目独有的优势

  • Apache License 2.0,版权条款清晰,大厂合规流程会轻松很多;([Apache 项目][7])
  • 孵化期就开始走 邮件列表 + 社区治理,工程决策、版本规划都有公开记录;([Apache Incubator][4])
  • 版本会发布到 Maven Central,你只需要正常引依赖即可。([GitHub][2])

对普通开发来说,这意味着一件事:这个库不是某家公司的“私产”,而是整个社区一起养,稳定性、延续性、可预期性都会好不少。

动手:从 EasyExcel 迁移到 Fesod,要改哪些代码?

讲点干货,假设你现在项目里已经在用 EasyExcel,我们来做一个“最小改动”的迁移示例。

1)Maven 依赖调整

原来可能是这样的:

<!-- 原 EasyExcel 依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version></dependency>

改成 Fesod:

<!-- Apache Fesod 依赖,版本号示例,实际以官网 / Maven Central 为准 --><dependency><groupId>org.apache.fesod</groupId><artifactId>fesod</artifactId><version>1.3.0</version></dependency>

官方文档有提醒:Fesod 目前内部还是用 POI,如果你自己项目里已经显式引入了 POI 相关 jar,需要注意排除重复依赖,避免版本冲突。

2)导出代码改造示例

假设你原来的导出代码长这样(EasyExcel):

publicvoidexportWithEasyExcel(OutputStream out, List<OrderExportRow> rows){    EasyExcel.write(out, OrderExportRow.class)            .autoCloseStream(false)            .sheet("订单")            .doWrite(rows);}

迁移到 Fesod,一般只需要把入口类和包名换掉(实际项目里可能有少量细节差异,这里演示整体思路):

publicvoidexportWithFesod(OutputStream out, List<OrderExportRow> rows){    FesodSheet.write(out, OrderExportRow.class)            .autoCloseStream(false)            .sheet("订单")            .doWrite(rows);}

大部分业务代码(模型类、注解、字段定义)都可以原样复用,这也是很多文章说“可以无缝从 EasyExcel 迁移”的原因。

3)一个综合小工具示例:统一导入导出工具类

很多项目里都会封装一个 ExcelHelper,下面是用 Fesod 写的一个简单版本,方便你直接抄回去改:

publicclassExcelHelper{/**     * 读取 Excel 并用指定监听器处理     */publicstatic <T> voidread(InputStream in, Class<T> head, ReadListener<T> listener){        FesodSheet.read(in, head, listener)                .sheet()                .doRead();    }/**     * 读取 Excel 第一行作为表头,返回 List     */publicstatic <T> List<T> readToList(InputStream in, Class<T> head){        List<T> result = new ArrayList<>();        FesodSheet.read(in, head, new ReadListener<T>() {@Overridepublicvoidinvoke(T data, AnalysisContext context){                        result.add(data);                    }@OverridepublicvoiddoAfterAllAnalysed(AnalysisContext context){// ignore                    }                })                .sheet()                .doRead();return result;    }/**     * 写 List 到 Excel     */publicstatic <T> voidwrite(OutputStream out, Class<T> head, List<T> data, String sheetName){        FesodSheet.write(out, head)                .sheet(sheetName)                .doWrite(data);    }}

后面你在 Service 里就可以很自然地用:

publicvoidexportUsers(HttpServletResponse response)throws IOException {    List<UserExportRow> rows = userService.queryExportRows();    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");    response.setCharacterEncoding("utf-8");    response.setHeader("Content-disposition","attachment;filename=" + URLEncoder.encode("用户列表.xlsx""UTF-8"));try (OutputStream out = response.getOutputStream()) {        ExcelHelper.write(out, UserExportRow.classrows, "用户");    }}

迁移完一两个功能,你基本就对 Fesod 的使用心里有数了。

什么时候值得把 EasyExcel 换成 Fesod?

实话实说,不是所有项目都必须“立刻迁移”,我自己的判断标准大概是:

  • 新项目,Excel 使用会很多、文件普遍比较大:可以直接上 Fesod,一步到位;
  • 老项目已经被 Excel 大文件拖垮过:可以先挑一个导入 / 导出的核心场景迁移体验一下;
  • 对开源合规要求比较严格、公司偏爱 Apache 生态:Fesod 的牌照和社区模式会更友好;
  • 原本就大量依赖 EasyExcel,但经常被一些 bug / 性能问题烦到:可以考虑用 Fesod 作为中长期演进目标。

如果你现在还停留在“原生 POI + 自己造轮子”的阶段,那就别纠结了,无论是 EasyExcel 还是 Fesod,随便选一个都会比你自己写强很多

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

🔥东哥私藏精品🔥
东哥作为一名老码农,整理了全网最全《Java高级架构师资料合集》。总量高达650GB

最新文章

随机文章

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