当前位置:首页>Linux>吃透Linux内核核间通信驱动框架:架构设计+分层实现+实战,多核驱动开发必看

吃透Linux内核核间通信驱动框架:架构设计+分层实现+实战,多核驱动开发必看

  • 2026-02-07 20:59:42
吃透Linux内核核间通信驱动框架:架构设计+分层实现+实战,多核驱动开发必看

吃透Linux内核核间通信驱动框架:架构设计+分层实现+实战,多核驱动开发必看

多核架构已成嵌入式Linux的主流形态,核间通信(IPC)作为多核系统的核心纽带,零散的IPI+共享内存代码早已满足不了复杂SoC的开发需求。一套标准化、可复用、易移植的核间通信驱动框架,是解决多核驱动兼容性差、同步混乱、维护成本高的关键。本文从内核驱动设计视角,深度拆解核间通信驱动框架的核心架构、分层实现,搭配ARM多核实战案例,硬核适配嵌入式Linux内核开发者,助力公众号文章快速吸粉。

一、开篇直击痛点:为什么必须搞核间通信驱动框架?

做过多核Linux驱动开发的都懂,直接写裸奔的核间通信代码,踩坑是常态:

- 碎片化严重:不同场景(实时通知/大数据传输)代码独立,复用率极低,重复造轮子
- 硬件耦合强:直接操作IPI控制器、共享内存寄存器,换一款SoC就得大面积改代码
- 稳定性堪忧:手动处理自旋锁、缓存一致性,易引发死锁、数据错乱,排查难度大
- 无容错机制:缺乏核离线检测、通信超时、异常恢复逻辑,系统鲁棒性差

而核间通信驱动框架的核心价值,就是封装硬件差异、统一上层接口、规范同步机制、内置容错能力,让多核驱动开发从“野蛮生长”走向“标准化开发”,这也是中高级内核开发者的必备技能。

补充:核间通信驱动框架核心设计3原则(内核开发铁律)

1. 硬件无关性:上层业务与底层多核硬件解耦,底层适配SoC,上层逻辑不变
2. 分层解耦:按功能分层设计,层间接口清晰,便于扩展和维护
3. 实时可靠:兼顾嵌入式实时性(低延迟),内置异常处理,保证通信稳定性

二、核心干货:Linux核间通信驱动框架四层架构(行业主流)

Linux内核无官方统一核间通信驱动框架,但嵌入式行业公认四层分层架构,兼顾内核驱动规范与多核场景需求,四层各司其职、层层联动,是框架设计的核心骨架。

第一层:硬件适配层(底层)—— 屏蔽多核硬件差异

框架最底层,与CPU架构强绑定(ARM/x86/MIPS),核心作用是封装硬件细节,向上层提供统一硬件操作接口,是框架的“硬件基石”。

- 核心功能:适配多核SoC的IPI控制器、共享内存控制器,屏蔽不同厂商SoC的硬件寄存器差异
- ARM架构关键实现(嵌入式高频):
1. IPI硬件适配:封装IPI中断触发( smp_cross_call() )、中断注册( request_percpu_irq() )、中断清除、核在线检测( cpu_online() )接口,适配Cortex-A/R系列IPI控制器差异
2. 共享内存适配:封装连续物理内存分配( dma_alloc_coherent() ,嵌入式必用)、非缓存映射(解决多核缓存一致性)、内存地址转换接口,避免直接操作内存物理地址
- 设计要点:只做硬件操作,不包含任何业务逻辑,跨SoC移植仅需修改此层

第二层:核心通信层(核心)—— 实现通信核心能力

框架的“心脏”,承接硬件层、支撑上层,实现核间通信的核心逻辑,是框架的核心价值所在。

- 核心功能:整合“核间通知+数据传递+同步互斥”三大核心能力,是核间通信的核心载体
- 三大核心模块详解:
1. 核间通知模块:基于硬件层IPI接口,实现轻量事件通知,支持单播(指定核)、广播(所有核),延迟微秒级,适配实时场景
2. 数据传递模块:基于硬件层共享内存接口,分“小数据缓冲区”(控制指令)、“大数据缓冲区”(音视频/传感器数据),无数据拷贝,保证高吞吐
3. 同步互斥模块:内置自旋锁(多核高频场景首选)、信号量机制,保护共享资源访问,避免数据竞争;自旋锁禁用睡眠,适配内核态实时场景
- 关键接口:向上暴露 ipc_send_msg() (发送消息)、 ipc_recv_msg() (接收消息)、 ipc_notify_core() (核间通知)核心接口,隐藏底层实现细节

第三层:协议封装层(中层)—— 规范数据传输格式

解决“裸数据传输混乱”问题,给核间数据加“标准化外衣”,是框架的“规则制定者”。

- 核心功能:定义统一消息格式、通信协议,处理消息打包/解包、协议校验,保证数据传输的规范性和可靠性
- 核心设计:
1. 统一消息结构体:包含消息类型、数据长度、目标核ID、源核ID、校验位、消息正文,避免数据格式混乱
struct ipc_msg {
u32 msg_type; // 消息类型(控制指令/数据传输)
u32 src_cpu; // 源核ID
u32 dst_cpu; // 目标核ID
u32 data_len; // 数据长度
u32 check_sum; // 校验位(防数据错乱)
u8 data[0]; // 柔性数组(消息正文)
};
 
2. 协议校验机制:添加CRC校验位,接收端校验数据完整性,避免跨核数据传输出错
3. 消息分包/组包:支持大数据自动分包、接收端自动组包,解决共享内存单次传输大小限制
- 设计要点:协议可扩展,支持自定义消息类型,适配不同业务场景

第四层:上层应用层(顶层)—— 对接业务逻辑

框架的“入口层”,面向驱动开发者,提供简洁易用的业务接口,是框架的“最终使用者”。

- 核心功能:封装业务化接口,开发者无需关注底层硬件、通信逻辑,直接调用接口实现业务需求
- 常用业务接口(极简设计):
-  ipc_send_cmd(u32 dst_cpu, u32 cmd, void *data, u32 len) :向指定核发送控制指令
-  ipc_send_bigdata(u32 dst_cpu, void *data, u32 len) :向指定核发送大数据块
-  ipc_register_callback(u32 msg_type, ipc_callback_t cb) :注册消息回调函数,接收指定类型消息
- 设计要点:接口极简、语义清晰,开发者无需具备深入的多核通信知识,即可快速上手

三、关键补充:框架必备4大核心机制(稳定性保障)

一套成熟的核间通信驱动框架,光有架构不够,还需内置4大核心机制,避免踩坑,这也是新手与资深开发者的核心差距。

1. 容错机制:内置核离线检测(发送前校验目标核状态)、通信超时重传、消息丢失补偿,避免核离线导致内核崩溃
2. 缓存一致性机制:强制共享内存非缓存映射( __iomem 修饰),配合 dma_wmb() / dma_rmb() 内存屏障,解决多核缓存不一致问题(嵌入式必做)
3. 消息队列机制:内置内核消息队列,缓存待发送/待处理消息,实现异步通信,避免核间阻塞
4. 中断安全机制:同步操作使用 spin_lock_irqsave() / spin_unlock_irqrestore() ,关闭本地中断加锁,避免中断上下文与进程上下文竞争

四、实战落地:ARM多核核间通信驱动框架实现(可直接复用)

结合嵌入式Linux高频场景,基于四层架构实现简易版核间通信驱动,内核模块形式,无需修改内核源码,编译加载即可使用。

1. 实战需求

核0向核1发送控制指令+1KB数据,核1接收后回调处理,基于四层架构实现,保证稳定性与可移植性。

2. 核心代码实现(关键片段,适配ARM Cortex-A系列)

#include <linux/init.h>
#include <linux/module.h>
#include <linux/smp.h>
#include <linux/spinlock.h>
#include <linux/cpu.h>
#include <linux/dma-mapping.h>

// 1. 协议封装层:统一消息结构体
#define IPC_MSG_CMD 0x01 // 控制指令类型
#define IPC_MSG_DATA 0x02 // 数据传输类型
struct ipc_msg {
u32 msg_type;
u32 src_cpu;
u32 dst_cpu;
u32 data_len;
u32 check_sum;
u8 data[0];
};

// 2. 硬件适配层:IPI+共享内存硬件封装
static void __iomem *shm_base; // 共享内存基地址
static spinlock_t ipc_lock;
#define SHM_SIZE 2048 // 共享内存大小(2KB)

// 分配共享内存(非缓存,解决一致性问题)
static int ipc_hw_shm_init(void)
{
shm_base = dma_alloc_coherent(NULL, SHM_SIZE, NULL, GFP_KERNEL);
if (!shm_base) return -ENOMEM;
memset(shm_base, 0, SHM_SIZE);
return 0;
}

// 发送IPI中断
static void ipc_hw_send_ipi(u32 dst_cpu, void (*handler)(void *))
{
if (!cpu_online(dst_cpu)) return;
smp_send_ipi(dst_cpu, handler, NULL);
}

// 3. 核心通信层:核间通信核心逻辑
typedef void (*ipc_callback_t)(struct ipc_msg *msg);
static ipc_callback_t g_ipc_cb = NULL;

// IPI中断处理函数(接收端核心逻辑)
static void ipc_core_ipi_handler(void *data)
{
unsigned long flags;
struct ipc_msg *msg = (struct ipc_msg *)shm_base;

spin_lock_irqsave(&ipc_lock, flags);
// 协议校验
if (msg->check_sum != (msg->msg_type + msg->data_len)) goto out;
// 回调上层业务处理
if (g_ipc_cb) g_ipc_cb(msg);
memset(shm_base, 0, SHM_SIZE);
out:
spin_unlock_irqrestore(&ipc_lock, flags);
}

// 发送消息核心函数
static int ipc_core_send_msg(u32 dst_cpu, u32 msg_type, void *data, u32 len)
{
unsigned long flags;
struct ipc_msg *msg = (struct ipc_msg *)shm_base;
if (len > SHM_SIZE - sizeof(struct ipc_msg)) return -EINVAL;

spin_lock_irqsave(&ipc_lock, flags);
// 填充消息体
msg->msg_type = msg_type;
msg->src_cpu = smp_processor_id();
msg->dst_cpu = dst_cpu;
msg->data_len = len;
msg->check_sum = msg_type + len;
memcpy(msg->data, data, len);
// 发送IPI通知目标核
ipc_hw_send_ipi(dst_cpu, ipc_core_ipi_handler);
spin_unlock_irqrestore(&ipc_lock, flags);
return 0;
}

// 4. 上层应用层:业务接口(开发者直接调用)
int ipc_send_cmd(u32 dst_cpu, void *data, u32 len)
{
return ipc_core_send_msg(dst_cpu, IPC_MSG_CMD, data, len);
}
EXPORT_SYMBOL_GPL(ipc_send_cmd);

int ipc_send_bigdata(u32 dst_cpu, void *data, u32 len)
{
return ipc_core_send_msg(dst_cpu, IPC_MSG_DATA, data, len);
}
EXPORT_SYMBOL_GPL(ipc_send_bigdata);

int ipc_register_callback(ipc_callback_t cb)
{
g_ipc_cb = cb;
return 0;
}
EXPORT_SYMBOL_GPL(ipc_register_callback);

// 模块初始化与卸载
static int __init ipc_driver_init(void)
{
spin_lock_init(&ipc_lock);
if (ipc_hw_shm_init() != 0) return -ENOMEM;
printk(KERN_INFO "核间通信驱动框架加载成功!\n");
return 0;
}

static void __exit ipc_driver_exit(void)
{
dma_free_coherent(NULL, SHM_SIZE, shm_base, 0);
printk(KERN_INFO "核间通信驱动框架卸载成功!\n");
}

module_init(ipc_driver_init);
module_exit(ipc_driver_exit);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("ARM Linux IPC Driver Framework");
 

3. 编译与测试说明

1. 编写Makefile,指定ARM交叉编译器与内核源码路径
2. 交叉编译为.ko文件,烧录到嵌入式多核设备
3. 加载模块: insmod ipc_framework.ko 
4. 业务驱动调用上层接口,即可实现跨核通信

五、避坑指南:多核驱动框架开发5大高频踩坑点(嵌入式必看)

1. 缓存一致性坑:嵌入式场景必须用 dma_alloc_coherent() 分配共享内存,禁用缓存,否则多核数据不一致
2. 自旋锁使用坑:自旋锁内禁止调用 sleep() 、 copy_to_user() 等睡眠函数,否则引发死锁
3. IPI发送坑:发送前必须用 cpu_online() 检查目标核状态,避免向离线核发中断导致内核panic
4. 内存大小坑:共享内存大小需预留冗余,避免消息体超出内存范围导致内存越界
5. 中断安全坑:中断上下文与进程上下文共享资源时,必须用带中断保护的自旋锁

六、延伸对比:Linux vs NuttX 核间通信驱动框架(嵌入式开发者关注)

作为嵌入式高频接触的系统,两者框架差异显著,补充此部分提升文章针对性:

1. Linux:无官方统一框架,需自行基于四层架构实现,灵活性高,适配高性能多核场景,适合复杂嵌入式系统
2. NuttX:内置 ipcmq 核间消息队列框架,封装度高,无需手动分层,接口简洁,适合轻量实时嵌入式场景
3. 选型建议:车载、工业控制等复杂场景用Linux自研框架,消费类轻量设备用NuttX内置框架

七、总结:核间通信驱动框架核心心法

1. 架构核心:四层架构是基础,硬件适配层屏蔽差异,核心通信层实现能力,协议层规范格式,应用层对接业务
2. 设计关键:硬件无关性+分层解耦+容错机制,是框架可复用、可移植、高可靠的核心
3. 嵌入式重点:缓存一致性、中断安全、核在线检测,是避免踩坑的三大关键
4. 进阶方向:深入内核 arch/arm/kernel/smp.c ,优化IPI触发延迟,结合DMA提升大数据传输

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-09 04:06:25 HTTP/2.0 GET : https://f.mffb.com.cn/a/459748.html
  2. 运行时间 : 0.137693s [ 吞吐率:7.26req/s ] 内存消耗:4,727.38kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b88971821031ff161fb3ce844ca8d5fa
  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.000589s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000687s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002950s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.006936s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000753s ]
  6. SELECT * FROM `set` [ RunTime:0.000255s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000535s ]
  8. SELECT * FROM `article` WHERE `id` = 459748 LIMIT 1 [ RunTime:0.009634s ]
  9. UPDATE `article` SET `lasttime` = 1770581185 WHERE `id` = 459748 [ RunTime:0.004342s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000369s ]
  11. SELECT * FROM `article` WHERE `id` < 459748 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.003043s ]
  12. SELECT * FROM `article` WHERE `id` > 459748 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.006990s ]
  13. SELECT * FROM `article` WHERE `id` < 459748 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006708s ]
  14. SELECT * FROM `article` WHERE `id` < 459748 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.014681s ]
  15. SELECT * FROM `article` WHERE `id` < 459748 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.009112s ]
0.139289s