当前位置:首页>Linux>嵌入式Linux驱动--sk_buff结构体详解

嵌入式Linux驱动--sk_buff结构体详解

  • 2026-03-27 14:24:45
嵌入式Linux驱动--sk_buff结构体详解
深入理解Linux的 sk_buff结构体:网络数据的“万能容器”
在 Linux 网络系统中,所有数据包的传输都依赖于一个核心数据结构——`sk_buff`(Socket Buffer)。它就像是网络世界的“快递盒”,不仅装着要发送或接收的数据,还携带着数据包的各类关键信息,贯穿整个协议栈的处理过程。下面用通俗易懂的方式,帮你掌握它的核心原理与操作方法。
一、sk_buff:网络数据的核心载体
Linux 网络是分层的,应用层只管按协议打包数据,无需关心底层怎么传。打包完成后,数据都会通过 `dev_queue_xmit()` 发送出去,接收时则用 `netif_rx()`。而这两个函数背后的核心,就是 `sk_buff`。
它的核心作用:
- 发送数据时:各协议层(传输层、网络层、链路层)在 `sk_buff` 中添加对应协议头,最终由底层驱动将完整的 `sk_buff` 发送出去。
- 接收数据时:底层驱动把收到的原始数据打包成 `sk_buff`,交给上层协议处理,上层逐层剥离协议头,直到把最终数据交给应用。
二、sk_buff 的关键成员:它到底存了哪些信息?
`sk_buff` 结构体定义在 `include/linux/skbuff.h` 中,字段很多,但核心是围绕“数据存储”和“上下文管理”设计的,重点看这几类:
1. 双向链表指针:串联多个数据包
```c
structsk_buff next; // 指向下一个 sk_buff
struct sk_buff prev; // 指向上一个 sk_buff
```
这两个指针让多个 `sk_buff` 形成双向链表,用于批量处理数据包,比如合并小包、队列管理等。
2. 时间戳:记录数据的“生命时刻”
```c
ktime_t tstamp; // 数据包接收或准备发送的时间戳
```
主要用于统计延迟、流量分析,比如查看数据包在网卡接收时的精准时间。
3. 关联信息:数据包的“身份标签”
```c
struct sock sk; // 数据包所属的Socket(本地收发时有效)
struct net_device dev; // 收发数据包的网卡设备
```
- `sk` 标识这个数据包属于哪个应用程序的 Socket(比如哪个 TCP 连接)。
- `dev` 告诉内核,这个包是从哪块网卡发出去的,或者从哪块网卡收进来的。
4. 核心内存布局:数据怎么存?
这是理解 `sk_buff` 的关键,它通过几个指针精准管理缓冲区的内存:
```c
unsigned charhead; // 缓冲区起始位置(整个内存的头)
unsigned char data; // 有效数据的起始位置(随协议处理动态变化)
unsigned char tail; // 有效数据的结束位置
unsigned char end; // 缓冲区的结束位置(整个内存的尾)
```
形象比喻:
假设缓冲区是一条“跑道”:
- `head` 到 `data`:是预留的“起跑区”(头部空间),用于后续添加协议头(比如给数据包加个MAC头)。
- `data` 到 `tail`:是“跑道中间的有效区域”,装着当前实际的数据(比如 IP 包头+载荷)。
- `tail` 到 `end`:是预留的“冲刺区”(尾部空间),用于追加数据(比如给数据包加尾部校验信息)。
这种设计让内核在处理协议时,不需要频繁移动整个数据,只需调整指针,就能高效扩展或收缩数据区。
5. 长度与协议头:数据包的“说明书”
```c
unsigned int len; // 有效数据总长度(含分片数据)
unsigned int data_len; // 分片部分的长度(非线性数据的长度)
__u16 mac_len; // MAC 协议头的长度
__u16 protocol; // 数据包的协议类型(如以太网的 0x0800 表示 IP 协议)
__u16 transport_header; // 传输层头部(如 TCP/UDP 头)的位置
__u16 network_header; // 网络层头部(如 IP 头)的位置
__u16 mac_header; // 链路层头部(如 MAC 头)的位置
```
- `len` 是有效数据的总大小,包含了主缓冲区和分片中的数据。
- 协议头偏移量用于快速定位各层头部,比如处理 IP 包时,直接通过 `network_header` 找到 IP 头的位置,无需手动计算。
6. 控制缓冲区:私有数据的“小抽屉”
```c
char cb; // 控制缓冲区,大小 48字节,按 8字节对齐
```
这是每个协议层的私有空间,比如 TCP 协议可以用它存储序列号、确认号等临时数据,不需要额外分配内存,既高效又方便。
7. 释放回调:数据包的“收尾工作”
```c
void(destructor)(struct sk_buff skb);
```
当释放 `sk_buff` 时,会调用这个函数,用于完成一些收尾操作,比如更新 Socket 的内存统计信息。
三、sk_buff 的核心操作:怎么用它管理数据?
内核为 `sk_buff` 提供了一套标准操作 API,核心围绕“分配、释放、调整内存布局”展开。
1. 分配:创建 sk_buff 容器
要处理数据包,第一步是分配 `sk_buff`,常用两种方法:
- `alloc_skb(size, priority)`:通用分配函数,`size` 是要存储的数据大小,`priority` 是内存分配优先级(如 `GFP_KERNEL` 用于进程上下文,`GFP_ATOMIC` 用于中断上下文,避免睡眠)。分配成功返回 `sk_buff` 指针,失败返回 `NULL`。
- `netdev_alloc_skb(dev, length)`:专门为网卡设备定制的分配函数,针对网卡的数据接收做了优化(比如内存对齐),适合在网卡驱动中分配接收数据的 `sk_buff`。参数 `dev` 是要使用的网卡设备,`length` 是要分配的数据大小,同样返回成功指针或失败 `NULL`。
2. 释放:回收内存,避免泄漏
数据包处理完后,必须释放 `sk_buff`,否则会导致内存泄漏。根据上下文不同,选择对应的释放函数:
- `kfree_skb(struct sk_buff skb)`:通用释放函数,适合在进程上下文使用,会安全回收所有内存。
- `dev_kfree_skb(struct sk_buff skb)`:专为网络驱动设计,适合在中断、软中断等原子上下文使用,它内部处理了原子上下文的安全释放,避免因睡眠导致的系统问题。
3. 调整内存布局:灵活处理数据
这四个函数是操作 `sk_buff` 的核心,本质是通过移动指针调整数据区,实现数据的增删,无需拷贝大量内存:
- `skb_put(skb, len)`:在尾部扩展数据
把 `tail` 向后移动 `len` 字节,同时 `len` 也增加 `len`,用于在数据包尾部添加内容(比如填充载荷尾部)。操作后,新的 `tail` 位置就是扩展数据的起点,返回这个新起点的指针。
- `skb_push(skb, len)`:在头部扩展数据
把 `data` 向前移动 `len` 字节(相当于预留头部空间),同时 `len` 增加 `len`,用于添加协议头(比如从传输层到网络层,添加IP头)。操作后,新的 `data` 位置就是扩展后的头部起点,返回这个新起点。
- `skb_pull(skb, len)`:从头部删除数据
把 `data` 向后移动 `len` 字节,同时 `len` 减少 `len`,用于剥离协议头(比如从链路层到网络层,剥离 MAC 头)。操作后,新的 `data` 位置就是剩余数据的起点,返回这个新起点。
- `skb_reserve(skb, len)`:预留头部空间
同时把 `data` 和 `tail` 向后移动 `len` 字节,预留出 `len` 大小的头部空间。常用于驱动层或协议层预先预留协议头的位置,避免后续频繁调整,比如网卡驱动在接收数据时,先用它预留 MAC 头的空间,后续直接填充 MAC 头即可。
四、关键流程:sk_buff 如何贯穿网络收发?
- 发送流程:应用层打包数据后,创建 `sk_buff`,各协议层依次用 `skb_push` 添加协议头,最终通过 `dev_queue_xmit()` 发送,底层驱动通过 `net_device_ops` 中的 `ndo_start_xmit()` 完成最终发送,本质是把 `sk_buff` 传给硬件网卡。
- 接收流程:网卡收到数据后,驱动创建 `sk_buff`,用 `netif_rx()` 传递给上层,上层依次用 `skb_pull` 剥离协议头,直到获取应用层数据,最终把数据交给应用。
整个过程围绕 `sk_buff` 展开,通过指针调整实现高效处理,避免了数据拷贝带来的性能损耗。
五、总结:sk_buff 的设计精髓
`sk_buff` 的核心设计围绕高效、灵活、安全:
-零拷贝:通过指针调整而非数据复制,穿越协议栈,大幅减少内存开销;
- 灵活内存布局:头部预留空间、尾部预留空间的设计,让添加/剥离协议头只需调整指针,无需移动数据;
- 引用计数安全:通过引用计数管理生命周期,支持多协议层、多组件共享,避免重复释放或内存泄漏;
- 模块化扩展:控制缓冲区、字段条件编译等设计,让各协议层可定制私有数据,兼容不同场景。
无论是开发网络驱动,还是研究内核协议栈,熟练掌握 `sk_buff` 的内存模型和操作 API,都是绕不开的基础能力。建议结合实际内核源码和网络抓包分析,观察数据包在协议栈中如何被 `sk_buff` 承载和处理,能更深刻地理解它的底层逻辑。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 14:48:59 HTTP/2.0 GET : https://f.mffb.com.cn/a/479422.html
  2. 运行时间 : 0.206462s [ 吞吐率:4.84req/s ] 内存消耗:4,684.48kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=18d1bb032497b5a4c0b174a85c3a0733
  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.001099s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001358s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000570s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000530s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001074s ]
  6. SELECT * FROM `set` [ RunTime:0.000439s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001152s ]
  8. SELECT * FROM `article` WHERE `id` = 479422 LIMIT 1 [ RunTime:0.004184s ]
  9. UPDATE `article` SET `lasttime` = 1774594139 WHERE `id` = 479422 [ RunTime:0.013830s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.004833s ]
  11. SELECT * FROM `article` WHERE `id` < 479422 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000977s ]
  12. SELECT * FROM `article` WHERE `id` > 479422 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000931s ]
  13. SELECT * FROM `article` WHERE `id` < 479422 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003640s ]
  14. SELECT * FROM `article` WHERE `id` < 479422 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001385s ]
  15. SELECT * FROM `article` WHERE `id` < 479422 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003189s ]
0.210828s