跳到内容
当前位置:首页>Excel>干掉POI内存溢出!阿里EasyExcel万字实战,搞定所有Excel导入导出场景

干掉POI内存溢出!阿里EasyExcel万字实战,搞定所有Excel导入导出场景

  • 2026-09-23 19:09:49
干掉POI内存溢出!阿里EasyExcel万字实战,搞定所有Excel导入导出场景

前言

做Java后台开发,几乎没人能避开Excel导入导出的需求。报表导出、批量数据导入、数据备份、台账下载,这些都是业务系统的标配功能。但传统的Apache POI框架,总能让开发者踩满坑:
✅ 小数据量正常运行,十万级数据直接OOM内存溢出
✅ 加载整个Excel文件到内存,内存占用极高
✅ 代码冗余繁琐,样式、解析逻辑手写量大
✅ 频繁出现合并单元格错乱、格式兼容问题
而EasyExcel,阿里开源的Excel处理组件,完美解决了POI的核心痛点。它以低内存、高性能、极简API、零OOM的优势,成为目前企业级项目Excel处理的首选方案。

一、为什么放弃POI,选择EasyExcel?

1.1 传统POI的致命缺陷

Apache POI处理Excel的核心逻辑是:一次性将整个Excel文件全部加载到内存,再进行解析、写入操作。这就导致一个致命问题:当文件数据量较大(10万行以上),内存占用会瞬间飙升,极易触发OutOfMemoryError,线上环境直接崩服务。
除此之外,POI的API设计繁琐,实现一个简单的带表头导出,需要大量冗余代码,开发效率极低。

1.2 EasyExcel核心优势

EasyExcel是基于POI封装的轻量化组件,彻底重构了读写逻辑,EasyExcel 通过 事件驱动 + 逐行处理 的设计理念,彻底解决了 Java 处理大文件 Excel 时的内存溢出问题。配合简洁的注解驱动 API,让开发者可以用极少的代码完成复杂的 Excel 导入导出功能, 核心亮点如下:
1. 极致低内存,杜绝OOM
采用逐行读取、流式写入机制,不加载全量文件到内存。读取百万级Excel文件,内存占用仅几MB,这是POI完全做不到的。
2. API极简,开箱即用
通过注解绑定实体与Excel列关系,几行代码即可实现导入导出,大幅减少样板代码。
3. 全面兼容
完美支持.xls(Excel97-2003)、.xlsx(Excel2007+) 两种格式,兼容所有办公软件。
4. 企业级能力齐全
支持自定义表头样式、单元格格式、多Sheet读写、模板填充、数据校验、大数据分片处理,完全满足复杂业务场景。
5. 持续维护、生态成熟
阿里开源、社区活跃,适配SpringBoot全版本,是国内企业项目的主流选型。

二、环境快速搭建(SpringBoot项目)

目前全新稳定版 4.0.3(新版重构版本,适配SpringBoot2.x/3.x,修复大量旧版BUG、优化流式读写性能),推荐项目直接升级使用,本文全部代码基于 4.0.3 版本适配。

2.1 Maven依赖

无需额外引入POI依赖,EasyExcel已内置适配版本,避免版本冲突。
<dependency>    <groupId>com.alibaba</groupId>    <artifactId>easyexcel</artifactId>    <version>4.0.3</version></dependency>

2.2 核心注解说明

EasyExcel通过实体类注解映射Excel列,核心常用注解:
@ExcelProperty:核心注解,绑定列名、列下标、表头名称
@ExcelIgnore:忽略该字段,不参与导入导出
@DateTimeFormat:统一日期格式化,解决Excel日期解析错乱问题
@NumberFormat:数字格式化,保留小数、千分位等

三、核心实战:基础导入导出

我们以用户数据为案例,实现最常用的Excel读写功能。

3.1 定义数据实体类

通过注解绑定Excel表头与实体字段映射关系,规范数据格式。
import com.alibaba.excel.annotation.ExcelProperty;import com.alibaba.excel.annotation.format.DateTimeFormat;import com.alibaba.excel.annotation.format.NumberFormat;import lombok.Data;import java.util.Date;/** * 用户Excel导入导出实体 */@Datapublic class UserExcelDTO {    // 表头名称:用户ID,对应Excel第一列    @ExcelProperty(value = "用户ID", index = 0)    private Long userId;    // 表头名称:用户名    @ExcelProperty(value = "用户名", index = 1)    private String username;    // 表头名称:手机号    @ExcelProperty(value = "手机号", index = 2)    private String phone;    // 日期格式化:统一解析/导出为yyyy-MM-dd    @ExcelProperty(value = "注册时间", index = 3)    @DateTimeFormat("yyyy-MM-dd")    private Date registerTime;    // 数字格式化:保留2位小数    @ExcelProperty(value = "账户余额", index = 4)    @NumberFormat("#.00")    private Double balance;    // 忽略该字段,不导出、不解析    @ExcelIgnore    private String token;}

3.2 实战1:Excel导出(本地文件写入)

几行代码即可实现批量数据导出,自动生成标准Excel文件,自带表头。
import com.alibaba.excel.EasyExcel;import java.util.ArrayList;import java.util.Date;import java.util.List;public class ExcelWriteDemo {    public static void main(String[] args) {        // 1. 构造模拟数据        List<UserExcelDTO> userList = new ArrayList<>();        for (int i = 1; i <= 100; i++) {            UserExcelDTO user = new UserExcelDTO();            user.setUserId((long) i);            user.setUsername("测试用户" + i);            user.setPhone("1380000" + i);            user.setRegisterTime(new Date());            user.setBalance(100.55 + i);            userList.add(user);        }        // 2. 写入Excel文件        String filePath = "D:/user_list.xlsx";        EasyExcel.write(filePath, UserExcelDTO.class)                .sheet("用户数据列表") // 设置sheet名称                .doWrite(userList); // 写入数据        System.out.println("Excel导出成功!");    }}

3.3 实战2:Excel读取(解析本地文件)

EasyExcel读取采用监听器模式,逐行解析数据,避免内存积压,适配超大文件。

步骤1:自定义读取监听器

import com.alibaba.excel.context.AnalysisContext;import com.alibaba.excel.event.AnalysisEventListener;import java.util.ArrayList;import java.util.List;/** * Excel读取监听器 */public class UserExcelListener extends AnalysisEventListener<UserExcelDTO> {    // 存储解析后的批量数据    private List<UserExcelDTO> dataList = new ArrayList<>();    /**     * 逐行解析数据(每行执行一次)     */    @Override    public void invoke(UserExcelDTO user, AnalysisContext context) {        dataList.add(user);        // 可自定义分片处理:每解析1000条批量入库,避免一次性数据过多        if (dataList.size() >= 1000) {            saveData();            dataList.clear();        }    }    /**     * 解析完成后执行     */    @Override    public void doAfterAllAnalysed(AnalysisContext context) {        // 处理剩余数据        saveData();        System.out.println("Excel文件解析完成!");    }    /**     * 模拟数据入库逻辑     */    private void saveData() {        // 此处可调用service批量保存数据库        System.out.println("批量处理数据:" + dataList.size() + "条");    }}

步骤2:执行文件读取

import com.alibaba.excel.EasyExcel;public class ExcelReadDemo {    public static void main(String[] args) {        String filePath = "D:/user_list.xlsx";        // 读取文件,绑定实体类与监听器        EasyExcel.read(filePath, UserExcelDTO.class, new UserExcelListener())                .sheet() // 读取第一个sheet                .doRead();    }}

四、Web核心实战:前后端导入导出

项目中90%的场景都是浏览器在线导入导出,直接响应流返回文件,无需生成本地文件。

4.1 Web端Excel导出(下载功能)

通过HttpServletResponse输出流,直接返回Excel文件给浏览器,支持前端直接下载。
import com.alibaba.excel.EasyExcel;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.net.URLEncoder;import java.util.ArrayList;import java.util.Date;import java.util.List;@RestControllerpublic class ExcelController {    /**     * 在线导出用户Excel     */    @GetMapping("/excel/export/user")    public void exportUserExcel(HttpServletResponse response) throws IOException {        // 1. 设置响应头,解决文件名乱码、浏览器下载问题        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");        response.setCharacterEncoding("UTF-8");        String fileName = URLEncoder.encode("用户数据报表", "UTF-8").replace("+", "%20");        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");        // 2. 构造模拟数据        List<UserExcelDTO> userList = new ArrayList<>();        for (int i = 1; i <= 500; i++) {            UserExcelDTO user = new UserExcelDTO();            user.setUserId((long) i);            user.setUsername("在线用户" + i);            user.setPhone("1390000" + i);            user.setRegisterTime(new Date());            user.setBalance(200.88 + i);            userList.add(user);        }        // 3. 流式写入响应流,直接下载        EasyExcel.write(response.getOutputStream(), UserExcelDTO.class)                .sheet("用户数据")                .doWrite(userList);    }}

4.2 Web端Excel导入(上传解析)

接收前端上传的Excel文件,在线解析、校验、批量入库,适配表单上传场景。
import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;@RestControllerpublic class ExcelImportController {    /**     * Excel批量导入用户数据     */    @PostMapping("/excel/import/user")    public String importUserExcel(@RequestParam("file") MultipartFile file) throws IOException {        // 校验文件格式        String fileName = file.getOriginalFilename();        if (fileName == null || (!fileName.endsWith(".xlsx") && !fileName.endsWith(".xls"))) {            return "文件格式错误,请上传Excel文件!";        }        // 解析上传文件        EasyExcel.read(file.getInputStream(), UserExcelDTO.class, new UserExcelListener())                .sheet()                .doRead();        return "数据导入成功!";    }}

五、进阶实战:复杂业务场景

5.1 百万级大数据量无OOM处理

EasyExcel的逐行流式解析天然支持大数据量处理,核心优化方案:
禁止一次性加载全量数据到List,采用分片批量入库(推荐1000-2000条/批)
解析过程中及时清空临时集合,释放内存
关闭不必要的日志、格式化逻辑,提升解析速度
实测:100万行Excel数据,POI直接OOM,EasyExcel内存占用稳定在10MB以内,解析耗时仅2-3秒。

5.2 自定义Excel样式(表头/内容)

4.0.3版本优化了样式处理器底层逻辑,兼容更多Excel版本,避免旧版样式错乱问题,自适应列宽、自定义表头样式写法如下:
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;// EasyExcel 4.0.3 专属样式写法:自适应列宽EasyExcel.write(response.getOutputStream(), UserExcelDTO.class)        .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())        .sheet("用户数据")        .doWrite(userList);
可自定义表头背景色、字体大小、加粗样式,满足报表美化需求。

5.3 多Sheet导出

一份Excel文件生成多个Sheet,适配多维度报表场景:
// 第一个SheetEasyExcel.write(filePath, UserExcelDTO.class)        .sheet(0, "用户数据")        .doWrite(userList);// 第二个SheetEasyExcel.write(filePath, OrderExcelDTO.class)        .sheet(1, "订单数据")        .doWrite(orderList);

六、高频踩坑避坑指南

整理项目开发中最容易遇到的问题,直接规避BUG:

坑1:Excel文件名中文乱码

解决方案:严格使用URLEncoder编码文件名,适配IE、Chrome、Edge所有浏览器。

坑2:日期、数字格式解析错乱

解决方案:实体字段必须添加 @DateTimeFormat、@NumberFormat 注解,统一格式解析规则。

坑3:大文件导入内存溢出

解决方案:禁止一次性存储全量数据,必须分片处理、分批入库。

坑4:表头行数不匹配,解析数据错位

解决方案:4.x版本对表头解析逻辑优化,必须手动指定 headRowNumber(1) 定义表头行数,避免自动识别错位,适配各类不规则Excel模板。

坑5:依赖版本冲突

解决方案:4.x版本已内置适配POI依赖,严禁手动引入、排除POI依赖,直接使用官方内置版本,彻底杜绝版本冲突。

七、总结

EasyExcel凭借低内存、高性能、极简API、高稳定性,彻底替代了传统POI,成为Java项目Excel处理的最优解。
核心优势总结:
解决POI内存溢出痛点,支持百万级大数据处理
注解式开发,代码极简,大幅提升开发效率
适配所有Web场景,导入导出一键落地
样式、多Sheet、模板填充等进阶能力全覆盖
本文所有代码可直接复制落地,覆盖95%以上企业Excel业务场景,建议收藏备查!

补充

EasyExcel 已进入维护模式,对于新项目来说,继续依赖一个“退役”的库,风险不小。就在大家一筹莫展之际,EasyExcel 原作者公开了一个新项目 FastExcel,号称 EasyExcel 的“升级版”,FastExcel 还新增了实用功能:读取 Excel 指定行数,Excel 直接转 PDF。

关键时间线:

  • 2024 年 12 月:FastExcel 1.0.0 发布

  • 2025 年 8 月:FastExcel 1.3.0 发布(稳定版)

  • 2025 年 9 月:进入 Apache 孵化器,更名为 Apache Fesod

迁移成本极低——完全兼容 EasyExcel,API 几乎一模一样,只需替换 Maven 依赖和包名即可

<!-- 从 EasyExcel --><dependency>    <groupId>com.alibaba</groupId>    <artifactId>easyexcel</artifactId>    <version>4.0.3</version></dependency><!-- 迁移到 FastExcel --><dependency>    <groupId>cn.idev.excel</groupId>    <artifactId>fastexcel</artifactId>    <version>1.3.0</version></dependency>

Apache Fesod:社区化升级

2025 年 9 月 17 日,FastExcel 正式进入 Apache 孵化器,更名为 Apache Fesod(Incubating)。项目名称 “fesod” 是 “Fast Easy Spreadsheet and Other Documents” 的缩写。

目前 Fesod 已发布 2.0.2-incubating 版本,仍在 Apache 孵化中。

总结演进路径:

EasyExcel(停更)→ FastExcel(活跃)→ Apache Fesod(Apache 孵化)

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