当前位置:首页>Linux>RTOS之RT-Thread & Linux 内核: 异常与中断核心知识整理

RTOS之RT-Thread & Linux 内核: 异常与中断核心知识整理

  • 2026-07-05 00:57:30
RTOS之RT-Thread & Linux 内核: 异常与中断核心知识整理
Hello,大家好,我是程序媛MM。

本文约4300字,今天继续阅读RT-Thread官方文档《rtthread_manual.zh》第七章与《深入Linux内核架构》中文版第14章内核活动的内容,二次重温中断相关知识,上一次还是在读《Linux设备驱动程序》这本书中梳理过中断的知识【精读】: 《Linux设备驱动程序》第十章--中断处理。学习RTOS,中断是必不可少的一个知识点。关于读书时间一长,日常不用又很容易忘记的问题,只好在有需要时多见几次面,总会留下一些蛛丝马迹的。本文整理了RT-Thread与Linux内核中关于异常与中断的核心知识点。

关注公众号, 即可获得与Linux相关的电子书籍以及常用开发工具,文末有文档清单。


前言

中断与异常是嵌入式实时系统、Linux操作系统响应外部硬件、CPU内部错误的核心机制,是软硬件交互的桥梁。本文结合《rtthread_manual.zh》和《深入Linux内核架构两份文档,分别覆盖RT-Thread实时OS(嵌入式MCU场景,Cortex-M为主)Linux通用内核(服务器/高端嵌入式) 两套主流中断体系,二者底层原理同源,但上层调度、下半部延迟处理、栈管理、API设计存在明显差异。 本文统一梳理基础概念、中断处理流程、分层处理机制、软硬件架构差异、工程落地场景、故障调试手段六大核心模块。

一 基础核心概念:异常、同步/异步、中断分类

1. 异常总定义

异常是CPU脱离正常流水线,跳转至专用处理代码的事件,处理不及时会导致系统崩溃、数据丢失。分为同步异常异步异常(中断) 两大类。

(1)同步异常(CPU内部触发,不可忽略、必须立即处理)

由当前指令执行产生,和程序执行强绑定,发生后必须暂停当前代码处理:

  • RT-Thread举例:除零错误、内存访问越界、HardFault、MemManage等Cortex-M故障;
  • Linux举例:缺页异常、除零、非法指令、内存保护故障。 特点:无法延后处理,必须当场修复或上报错误。

(2)异步异常(硬件中断IRQ,外部设备触发)

由外设(按键、串口、网卡、定时器)主动发起,与当前CPU执行代码无关,可临时屏蔽/延后处理,硬件中断全部属于异步异常。 特点:支持中断嵌套、中断屏蔽、延迟处理。

2. 硬件中断 vs 软中断(Linux特有,RT-Thread无原生软中断,用线程模拟)

  1. 硬件IRQ:外设电平/边沿触发,硬件通过中断控制器(NVIC/IO-APIC)通知CPU,执行ISR;
  2. Linux软中断softirq:纯软件机制,用于延迟硬件中断的耗时逻辑,运行于中断上下文,禁止睡眠
  3. 衍生延迟机制
    • Linux:tasklet(基于软中断,单CPU串行执行)、工作队列workqueue(进程上下文,允许睡眠);
    • RT-Thread:中断底半Bottom Half(信号量/事件/消息队列唤醒普通线程处理耗时逻辑)。

3. 关键术语区分

术语
定义
运行上下文
是否允许睡眠
ISR上半部Top Half
中断第一阶段,硬件寄存器读取、快速清中断标记
中断上下文
禁止睡眠、禁止长耗时操作
Bottom Half下半部
耗时业务逻辑,数据解析、协议处理
Linux:tasklet/软中断;
RT-Thread:普通线程
Linux tasklet禁止睡眠;RT-Thread线程允许睡眠
中断嵌套
高优先级中断抢占低优先级中断服务程序
中断上下文
-
独立中断栈
中断单独栈空间,不占用任务/进程栈
中断上下文
-

二 中断标准处理全流程(RT-Thread与Linux通用底层逻辑)

任意硬件中断触发后,CPU执行固定5步流程:

  1. 保存现场:自动/软件保存当前寄存器、程序计数器PC;
    • Cortex-M NVIC:硬件自动压PSR/R0~R3/R12,剩余寄存器由OS软件保存;
    • Linux X86:切换内核栈,汇编保存pt_regs完整寄存器集合。
  2. 切换栈(可选)
    • RT-Thread:强制使用独立全局中断栈,不占用线程栈,节省内存;
    • Linux:可配置独立IRQ栈,默认使用进程内核栈。
  3. 跳转中断服务函数ISR:根据中断向量表找到对应处理入口;
  4. 执行中断处理:分Top Half快速处理,触发下半部延迟任务;
  5. 恢复现场+返回:还原寄存器,回到被打断的代码继续执行。

关键时间指标(实时系统核心指标)

  1. 中断延迟TB:中断触发 → ISR第一行代码执行的间隔;
  2. 中断服务耗时TC:ISR上半部执行时长;
  3. 中断响应时间TD = TB + TC

实时系统硬性要求:TC尽可能短,长耗时必须丢给下半部,否则丢失中断、高优先级任务卡顿。

三 两大系统中断架构核心差异

1. RT-Thread(嵌入式MCU,Cortex-M NVIC架构)

(1)中断控制器:NVIC

统一内嵌于Cortex-M内核,原生支持中断嵌套、硬件自动保存部分寄存器;中断向量表为固定数组,采用WEAK弱符号,用户自定义同名函数即可覆盖默认中断处理。

(2)栈机制:全局独立中断栈

所有中断共用一套系统中断栈,中断发生时切换SP指针,完全不占用线程栈。 优势:无需为每个线程预留超大栈应对中断嵌套,内存利用率大幅提升,多线程场景收益明显。

(3)延迟处理:Bottom Half(线程方案)

无软中断/tasklet,采用IPC通信(信号量/事件/消息邮箱) 分离快慢逻辑:

  1. Top Half(ISR内):读取硬件寄存器、清除中断标志、释放信号量;
  2. 专用业务线程阻塞等待信号量,收到后执行数据解析、复杂运算等耗时操作;

(4)核心API

  1. 注册中断:rt_hw_interrupt_install()(Cortex-M部分分支不支持,直接覆盖向量表弱函数);
  2. 屏蔽/打开单路中断:rt_hw_interrupt_mask/umask()
  3. 全局关开中断:rt_hw_interrupt_disable/enable()(成对使用,恢复原始中断状态);
  4. 中断上下文标记:rt_interrupt_enter/leave()rt_interrupt_get_nest()(获取嵌套深度)。

2. Linux内核(X86/ARM服务器、高端嵌入式)

(1)中断控制器:PIC/IO-APIC/GIC

分层抽象irq_chip统一封装底层硬件操作(mask/unmask/ack/eoi),支持中断共享(多个设备共用同一个IRQ号)。 三层中断抽象:

  1. 芯片层irq_chip:直接操作中断控制器硬件;
  2. 电流层handle_irq:区分边沿/电平触发,处理中断挂起、并发冲突;
  3. 高层ISR:设备驱动注册的中断处理函数。

(2)三级延迟处理体系(分层解决耗时问题)

  1. 上半部ISR:关中断执行,仅读取硬件、标记中断,极短耗时;
  2. 软中断softirq:中断退出后自动执行,多核可并行运行,禁止睡眠(网络收发、定时器);
  3. tasklet:基于软中断封装,同一tasklet单CPU串行执行,驱动常用;
  4. 工作队列workqueue:内核线程上下文,允许睡眠、阻塞、调用复杂内核接口,处理超大耗时任务。

(3)核心数据结构

  • irq_desc[]:全局中断描述符数组,管理每个IRQ状态、控制器、处理函数链;
  • irqaction:单个设备中断处理链表,支持共享IRQ;
  • softirq_vec:软中断向量表,系统固定32个软中断;

(4)核心API

  • 注册中断:request_irq(irq, handler, flags, name, dev_id)
  • 释放中断:free_irq()
  • 触发软中断:raise_softirq()
  • 调度tasklet:tasklet_schedule()
  • 提交工作:schedule_work()

四 中断分层处理(Top Half + Bottom Half)通用设计规范

1. 上半部Top Half(ISR硬性约束)

仅允许做以下操作,禁止任何耗时逻辑

  1. 读取外设状态寄存器、缓存硬件原始数据;
  2. 清除硬件中断标志,防止重复触发;
  3. 通过信号量/软中断/tasklet唤醒下半部;
  4. 简单计数(如系统tick自增)。

严格禁止:

  • 循环延时、复杂算法、字符串打印、文件读写;
  • RT-Thread/Linux均禁止在ISR中睡眠、阻塞等待;
  • 大量内存拷贝、协议解析。

2. 下半部Bottom Half适用场景

串口大批量数据解析、网卡数据包校验、传感器滤波、存储读写、屏幕刷新等耗时业务。

两套系统实现对比

系统
下半部实现方式
上下文
优势
RT-Thread
信号量/事件唤醒业务线程
普通线程上下文
允许睡眠、灵活调度、优先级可控
Linux
tasklet/软中断
中断上下文
调度延迟极低,适合高速设备
Linux
workqueue工作队列
内核线程上下文
允许休眠,适合磁盘、慢速外设

3. 高速设备特殊优化方案

当设备传输速率极高、中断频繁触发(如10Mbps网口),频繁中断+任务切换会大幅降低带宽利用率:

  1. 增大单次传输数据长度,减少中断触发次数;
  2. 低速设备:中断模式;高速大数据设备:切换轮询模式;
  3. 轮询线程降低优先级,避免独占CPU阻塞其他任务。

五 实际应用场景

场景1:嵌入式RT-Thread串口接收(典型Bottom Half)

需求:串口高速接收,数据帧解析校验耗时,不能阻塞ISR

  1. ISR(Top Half):读取DR寄存器存入环形缓冲区,释放信号量,直接退出;
  2. 独立串口解析线程:阻塞等待信号量,收到后解析协议、校验、上报上层应用; 优势:ISR执行微秒级,不会丢失字节,复杂解析在线程执行,不影响其他中断。

场景2:Linux网卡数据收发

  1. 硬件中断ISR:标记网卡接收完成,触发NET_RX软中断;
  2. 软中断处理数据包拷贝、校验;
  3. 上层TCP/IP协议栈处理; 高速网卡依赖软中断并行处理,最大化吞吐。

场景3:按键外部中断(极简ISR,无需下半部)

按键触发仅记录按键电平、标记事件,无复杂运算,ISR内直接完成,不需要延迟处理。

场景4:存储设备SD卡中断(Linux工作队列)

SD读写耗时数百ms,tasklet禁止睡眠,必须使用workqueue,在进程上下文执行读写操作。

场景5:定时器中断(时钟tick)

属于极简ISR,仅全局tick变量+1,无下半部,是标准短耗时中断范例。

六 中断常见故障与调试方案

(一)高频故障现象及根因

  1. 丢失中断、数据丢包
    • 根因:ISR耗时过长,屏蔽中断期间新中断堆积溢出;电平触发中断未及时清标志;
    • 解决:拆分上下半部,缩短ISR;及时清除外设中断寄存器。
  2. 系统死机HardFault/Oops崩溃
    • 根因:ISR中调用阻塞/睡眠接口;中断栈溢出;中断共享未判断设备源;野指针访问;
    • 区分:RT-Thread多为栈溢出、非法函数调用;Linux多为IRQ链表空指针、并发无锁。
  3. 中断嵌套过深栈溢出
    • RT-Thread:虽然使用独立中断栈,但多层高优先级中断嵌套仍会耗尽栈;
    • 解决:调大中断栈大小,优化ISR减少局部变量,降低不必要中断频率。
  4. 实时性差、任务卡顿
    • 根因:频繁长耗时中断、频繁任务切换;高速设备误用中断模式;
    • 解决:高速设备改用轮询;所有耗时逻辑下放下半部。
  5. 假中断spurious interrupt(Linux)硬件异常、中断屏蔽未清除,内核反复触发无效IRQ,占用CPU;可通过/proc/interrupts统计。

(二)RT-Thread 中断调试手段

  1. 查看中断嵌套深度
    rt_uint8_t nest = rt_interrupt_get_nest();if(nest > 0// 当前处于中断上下文
  2. 关闭全局中断计时,定位长临界区rt_hw_interrupt_disable/enable包裹代码前后打点计时,找到长时间关中断逻辑。
  3. HardFault异常栈回溯Cortex-M发生HardFault时打印栈寄存器、PC地址,定位ISR内非法操作;
  4. 监控中断栈使用率RT-Thread提供栈水印统计,判断中断栈是否临近溢出;
  5. 打印中断触发频率在ISR内自增计数,周期打印,判断是否中断风暴。

(三)Linux内核中断调试手段

  1. 查看中断统计
    cat /proc/interrupts  # 查看各IRQ触发次数、绑定CPU、设备名cat /proc/softirqs    # 查看软中断占用情况
  2. 追踪中断耗时ftrace工具跟踪irq_handler_entry/irq_handler_exit,统计每个ISR执行时长;
  3. Oops崩溃日志分析发生中断空指针时内核打印Oops,包含IRQ号、调用栈,定位出错驱动ISR;
  4. tasklet/workqueue监控查看/proc/softirqs判断tasklet堆积;ps查看ksoftirqd内核线程CPU占用;
  5. 中断亲和性调优echo [cpu掩码] > /proc/irq/N/smp_affinity,将高频中断绑定单独CPU,减少调度冲突。

(三)通用中断调试黄金准则

  1. 任何ISR执行时间控制在微秒级,毫秒级逻辑必须下放下半部;
  2. 中断上下文禁止:睡眠、mutex锁、动态内存分配、大量打印;
  3. 电平触发中断务必在ISR内清除硬件中断标志,否则持续触发中断风暴;
  4. 共享中断必须在ISR内判断设备状态,非本设备中断直接返回IRQ_NONE;
  5. 实时系统尽量减少全局关中断的代码段,缩小临界区范围。

七 总结

  1. 同步异常由CPU内部错误产生,必须立即处理;硬件中断属于异步异常,支持屏蔽、嵌套、延迟处理;
  2. RT-Thread采用独立中断栈+线程式下半部,适配资源受限MCU;Linux采用irq分层+软中断/tasklet/workqueue多级延迟,适配高性能设备;
  3. 中断核心设计原则:上半部极速处理硬件,下半部异步处理耗时业务
  4. 故障核心根源多为ISR耗时过长、中断栈溢出、上下文接口误用,配套栈监控、中断统计、ftrace/Oops日志可快速定位问题;
  5. 高速传输场景可灵活切换轮询模式,平衡系统吞吐与实时性。
往期文章(欢迎订阅技术分享栏目全部文章):

【从零开始撸内核驱动源码】:以ttyserial(串口驱动)为例,串联字符设备驱动基础知识点的学习计划
Linux内核源码顶层 Makefile分析并单独编译调试内核自带的驱动
【从零开始撸内核驱动源码】:ttynull驱动
Linux内核驱动安装失败问题调试及解决方法
Linux内核驱动源码走读之编译内核及外部驱动实操指南
谢谢你看到这里

这里是女程序员的笔记本

 15年+嵌入式软件工程师兼二胎宝妈

分享读书心得、工作经验,自我成长和生活方式。

希望我的文字能对你有所帮助

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-05 10:44:39 HTTP/2.0 GET : https://f.mffb.com.cn/a/503504.html
  2. 运行时间 : 0.293215s [ 吞吐率:3.41req/s ] 内存消耗:4,427.45kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a4588b909346dfe0ed5eacc3b2f543b3
  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.000677s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000636s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001008s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000431s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000610s ]
  6. SELECT * FROM `set` [ RunTime:0.001127s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000697s ]
  8. SELECT * FROM `article` WHERE `id` = 503504 LIMIT 1 [ RunTime:0.023716s ]
  9. UPDATE `article` SET `lasttime` = 1783219480 WHERE `id` = 503504 [ RunTime:0.031641s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000703s ]
  11. SELECT * FROM `article` WHERE `id` < 503504 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.005102s ]
  12. SELECT * FROM `article` WHERE `id` > 503504 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.026299s ]
  13. SELECT * FROM `article` WHERE `id` < 503504 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.070142s ]
  14. SELECT * FROM `article` WHERE `id` < 503504 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002170s ]
  15. SELECT * FROM `article` WHERE `id` < 503504 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.010823s ]
0.296954s