乐于分享
好东西不私藏

若依AI学习第5天@EventListener使用

若依AI学习第5天@EventListener使用

📖 简介

@EventListener 是 Spring Framework 提供的一个强大注解,用于实现观察者模式(Observer Pattern),也称为事件驱动编程。它允许我们在 Spring 应用中发布和监听自定义事件,实现组件之间的解耦。

核心优势

  • • ✅ 松耦合:事件发布者和监听者之间无需直接依赖
  • • ✅ 异步处理:配合 @Async 注解实现异步事件处理
  • • ✅ 条件过滤:支持 SpEL 表达式进行条件监听
  • • ✅ 易于扩展:新增监听器无需修改现有代码

🎯 核心概念

  • • 事件(Event):继承自 ApplicationEvent 的类,封装事件数据
  • • 事件发布者(Publisher):通过 ApplicationEventPublisher 发布事件
  • • 事件监听器(Listener):使用 @EventListener 注解的方法监听和处理事件

💡 实战示例:订单系统

下面我们通过一个订单系统的完整示例,演示 @EventListener 的各种用法。

1. 创建订单事件

/** * 订单创建事件 */@DatapublicclassOrderCreatedEventextendsApplicationEvent {privatefinal Long orderId;      // 订单IDprivatefinal String productName; // 商品名称privatefinal Integer amount;     // 订单金额publicOrderCreatedEvent(Object source, Long orderId, String productName, Integer amount) {super(source);this.orderId = orderId;this.productName = productName;this.amount = amount;    }}

2. 发布事件

@ServicepublicclassOrderService {@Autowiredprivate ApplicationEventPublisher eventPublisher;publicvoidcreateOrder(Long orderId, Integer userId, String productName, int amount) {        System.out.println("create order : " + orderId);// 发布订单创建事件OrderCreatedEventevent=newOrderCreatedEvent(this, orderId, productName, amount);        eventPublisher.publishEvent(event);    }}

3. 监听事件

@ComponentpublicclassOrderEventListener {// 同步监听 - 发送短信通知@EventListenerpublicvoidhandleOrderEvent(OrderCreatedEvent event) {        System.out.println("【同步】发送短信通知,订单号: " + event.getOrderId());    }// 异步监听 - 更新库存@Async@EventListenerpublicvoidupdateInventory(OrderCreatedEvent event) {        System.out.println("【异步】更新库存 - 商品: " + event.getProductName());try {            Thread.sleep(1000); // 模拟耗时操作        } catch (InterruptedException e) {            e.printStackTrace();        }        System.out.println("【异步】库存更新完成");    }// 条件监听 - 金额大于1000的订单@EventListener(condition = "#event.amount > 1000")publicvoidhandleHighValueOrder(OrderCreatedEvent event) {        System.out.println("【高价值订单】订单金额: " + event.getAmount() + ",需要人工审核");    }}

4. 测试接口

@RestController@RequestMapping("/api/event")publicclassEventController {@Autowiredprivate OrderService orderService;/**     * 创建订单     */@GetMapping("/create-order")public String createOrder(@RequestParam Long orderId,@RequestParam String productName,@RequestParam Integer userId,@RequestParam Integer amount) {        System.out.println("========== 开始创建订单 ==========");        orderService.createOrder(orderId, userId, productName, amount);        System.out.println("========== 订单创建请求完成 ==========");return"订单创建成功,订单ID: " + orderId;    }}

🚀 测试验证

测试命令

# 测试普通订单(金额 < 1000)curl "http://localhost:9005/api/event/create-order?orderId=1001&productName=手机&userId=1&amount=500"# 测试高价值订单(金额 > 1000)curl "http://localhost:9005/api/event/create-order?orderId=1002&productName=笔记本电脑&userId=1&amount=5000"

执行结果分析

高价值订单(金额 5000)

========== 开始创建订单 ==========create order : 1002【同步】发送短信通知,订单号: 1002【高价值订单】订单金额: 5000,需要人工审核【异步】更新库存 - 商品: 笔记本电脑========== 订单创建请求完成 ==========【异步】库存更新完成

🔧 高级特性

1. 同步监听

默认情况下,@EventListener 是同步执行的,监听器会在发布事件的线程中执行。

@EventListenerpublicvoidhandleOrderEvent(OrderCreatedEvent event) {// 同步执行    System.out.println("【同步】发送短信通知,订单号: " + event.getOrderId());}

适用场景: 需要事务一致性、事件处理逻辑简单

2. 异步监听

配合 @Async 注解,可以在独立线程中异步处理事件。

@Async@EventListenerpublicvoidupdateInventory(OrderCreatedEvent event) {// 异步执行    System.out.println("【异步】更新库存 - 商品: " + event.getProductName());}

适用场景: 耗时操作(如发送邮件、调用第三方接口)、需要提高系统吞吐量

注意: 使用 @Async 需要先在配置类上添加 @EnableAsync 注解。

3. 条件监听

使用 SpEL 表达式进行条件过滤,只有满足条件的事件才会被处理。

@EventListener(condition = "#event.amount > 1000")publicvoidhandleHighValueOrder(OrderCreatedEvent event) {    System.out.println("【高价值订单】订单金额: " + event.getAmount() + ",需要人工审核");}

常用 SpEL 表达式:

  • • #event.amount > 1000 - 订单金额大于1000
  • • #event.amount > 1000 and #event.amount < 5000 - 金额在1000到5000之间

⚠️ 注意事项

1. 企业级应用的局限性

@EventListener 是 Spring 容器内的内存机制,存在以下限制:

局限性
说明
应用重启
未完成的异步任务会丢失
应用崩溃
内存中待处理的事件会丢失
分布式环境
无法跨 JVM 传递事件

2. 异步监听器的异常处理

异步监听器中的异常不会影响主流程,但需要单独处理。

@Async@EventListenerpublicvoidhandleAsyncEvent(OrderCreatedEvent event) {try {// 业务逻辑    } catch (Exception e) {        System.err.println("异步事件处理失败: " + e.getMessage());    }}

3. 事务传播

同步监听器默认参与当前事务,异步监听器在新事务中执行。


🎓 最佳实践

1. 企业级组合使用策略

在实际项目中,通常组合使用多种技术形成完整的事件驱动架构:

【同步关键业务】→ 【EventListener处理非关键逻辑】→ 【消息队列处理跨服务/持久化任务】

典型场景示例:

场景
技术选择
说明
订单创建 → 更新本地缓存
@EventListener
轻量级解耦
订单创建 → 记录操作日志
@EventListener
 + @Async
异步日志,不阻塞主流程
订单创建 → 发送短信通知
消息队列(RabbitMQ/Kafka)
需要持久化,可重试
订单创建 → 跨服务数据同步
消息队列
分布式环境

适用场景判断:

  • • ✅ 适合使用 @EventListener:应用内解耦、非关键业务逻辑、单机应用
  • • ❌ 不适合使用 @EventListener:需要持久化的任务、分布式系统、高可靠性要求

3. RuoYi-AI 实际案例:登录日志异步记录

事件定义:

// LogininforEvent.javapublicclassLogininforEventextendsApplicationEvent {privatefinal HttpServletRequest request;// ... }

监听器实现:

@Async@EventListenerpublicvoidrecordLogininfor(LogininforEvent logininforEvent) {HttpServletRequestrequest= logininforEvent.getRequest();finalUserAgentuserAgent= UserAgentUtil.parse(request.getHeader("User-Agent"));finalStringip= ServletUtils.getClientIP(request);Stringaddress= AddressUtils.getRealAddressByIP(ip);Stringos= userAgent.getOs().getName();Stringbrowser= userAgent.getBrowser().getName();// 插入登录日志到数据库    insertLogininfor(logininfor);}

作用: 当用户登录时,系统发布 LogininforEvent 事件,该方法异步监听并记录登录日志(包括 IP 地址、浏览器、操作系统等),避免阻塞主线程,提升登录响应速度。

4. 命名规范

  • • 事件类以 Event 结尾:OrderCreatedEvent
  • • 监听器类以 Listener 结尾:OrderEventListener
  • • 监听方法以 handle 开头:handleOrderEvent

❓ 常见问题

Q1: 同步监听和异步监听有什么区别?

A:

  • • 同步监听:在发布事件的线程中执行,会阻塞主流程,适合需要事务一致性的场景
  • • 异步监听:在独立线程中执行,不阻塞主流程,适合耗时操作

Q2: 如何确保异步监听器的执行顺序?

A: 异步监听器的执行顺序由线程池调度决定,无法保证顺序。如果需要顺序执行,应该使用同步监听器。

Q3: 如何避免事件处理失败影响主流程?

A:

  • • 使用异步监听器
  • • 在同步监听器中添加异常处理
@EventListenerpublicvoidhandleEvent(OrderCreatedEvent event) {try {// 业务逻辑    } catch (Exception e) {        System.err.println("事件处理失败: " + e.getMessage());    }}

📝 总结

@EventListener 注解是 Spring 框架中实现事件驱动编程的核心工具,通过它可以轻松实现组件之间的解耦和异步处理。

核心要点

  1. 1. 事件驱动:通过发布-订阅模式实现组件解耦
  2. 2. 同步异步:支持同步和异步两种事件处理方式
  3. 3. 条件过滤:使用 SpEL 表达式实现灵活的事件过滤
  4. 4. 易于扩展:新增监听器无需修改现有代码

适用场景

  • • 订单系统(订单创建、支付、发货等事件)
  • • 用户系统(注册、登录、注销等事件)
  • • 消息通知(邮件、短信、推送等)
  • • 数据同步(缓存更新、索引同步等)

通过合理使用 @EventListener,可以构建出更加灵活、可维护的 Spring 应用程序。


🔗 项目源码

  • • jing-yes-java/jingyes-spring-async
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-15 04:14:41 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/530182.html
  2. 运行时间 : 0.189078s [ 吞吐率:5.29req/s ] 内存消耗:4,846.53kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a0c55cb8552c5e4300fb0d3c000dc27b
  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.80 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001081s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001486s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001240s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000666s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001322s ]
  6. SELECT * FROM `set` [ RunTime:0.000627s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001592s ]
  8. SELECT * FROM `article` WHERE `id` = 530182 LIMIT 1 [ RunTime:0.001138s ]
  9. UPDATE `article` SET `lasttime` = 1776197681 WHERE `id` = 530182 [ RunTime:0.001631s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000696s ]
  11. SELECT * FROM `article` WHERE `id` < 530182 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000961s ]
  12. SELECT * FROM `article` WHERE `id` > 530182 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.007018s ]
  13. SELECT * FROM `article` WHERE `id` < 530182 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001546s ]
  14. SELECT * FROM `article` WHERE `id` < 530182 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001695s ]
  15. SELECT * FROM `article` WHERE `id` < 530182 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003418s ]
0.190770s