当前位置:首页>Linux>详解 Linux 中的 bind 机制

详解 Linux 中的 bind 机制

  • 2026-08-18 23:10:25
详解 Linux 中的 bind 机制

详解 Linux 中的 bind 机制:从驱动角度分析

做 Linux 驱动时,经常会听到一句话:设备和驱动“绑定”上了,probe 才会跑。这个说法没错,但如果只把 bind 理解成一个 sysfs 文件,或者一个可以手动 echo 的调试入口,就会漏掉更重要的东西。

从驱动模型角度看,bind 的本质是:内核把一个 struct device 和一个 struct device_driver 配成一对,并让驱动开始接管这个设备。这个过程背后有总线、有匹配表、有资源准备、有引用计数、有锁,还有失败后的恢复路径。

所以这篇文章不从用户态命令开始讲,而是站在驱动开发的视角,把 Linux bind 机制拆成三层:谁和谁绑定、什么时候自动绑定、手动 bind/unbind 到底适合解决什么问题。

一、bind 机制先看整体链路

Linux 设备驱动模型里,最核心的不是“驱动文件什么时候加载”,而是三类对象之间的关系:busdevicedriver

device 代表系统里已经被发现或注册出来的设备,比如一个 platform 设备、I2C 设备、SPI 设备、PCI 设备。driver 代表可以处理某类设备的驱动。bus 则是中间的裁判,它知道这类设备应该按什么规则匹配驱动。

bind 发生在匹配成功之后。设备和驱动并不是谁看到谁就直接牵手,中间一定要经过 bus 的匹配逻辑。比如 platform 总线会看 compatibleid_table 或设备名;I2C 总线会看设备 ID、OF 匹配表、ACPI ID;PCI 总线会看 vendor/device ID。

可以把整个过程理解成一条链:

  • 设备注册到某条总线。
  • 驱动注册到同一条总线。
  • 总线拿自己的规则做 match。
  • match 成功后进入 probe。
  • probe 成功后,设备和驱动才算真正绑定稳定。

这里有一个很实用的判断:只要 probe 没有成功,bind 就不能算完成。驱动可能已经匹配到了设备,但资源申请失败、时钟没准备好、GPIO 无效、regulator 不存在,都可能让 probe 返回错误,绑定也就不会进入稳定状态。

二、三大角色分层:bind 不是单点动作

很多 bind 问题,表面看是 probe 不执行,实际原因常常在更前面:设备没有注册到正确总线,驱动没有挂到同一总线,或者匹配表根本对不上。

以 platform 驱动为例,一个典型驱动会把自己注册成 platform_driver,里面包含 proberemove 和匹配表:

staticint demo_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;          // 当前被匹配到的设备

    dev_info(dev, "demo probe enter\n");      // 证明驱动已经真正接管设备

/* 这里通常申请寄存器、时钟、中断、GPIO、regulator 等资源 */
return0;                                 // 返回 0 才表示绑定成功
}

staticint demo_remove(struct platform_device *pdev)
{
    dev_info(&pdev->dev, "demo remove\n");    // unbind 或设备移除时会走这里
return0;
}

staticconststruct of_device_id demo_of_match[] = {
    { .compatible = "vendor,demo-device" },   // 和设备树节点的 compatible 对应
    { }
};

staticstruct platform_driver demo_driver = {
    .probe  = demo_probe,                     // bind 成功前必须经过的入口
    .remove = demo_remove,                    // unbind 或卸载时释放资源
    .driver = {
        .name = "demo-driver",
        .of_match_table = demo_of_match,      // 给总线 match 使用
    },
};

这段代码里,驱动并没有主动去“找某一个设备”。它只是告诉内核:我属于 platform 总线,我能处理 vendor,demo-device 这类设备。至于哪个设备会被交给它,是总线匹配逻辑决定的。

2.1 device 和 driver 必须站在同一条 bus 上

bind 最容易被忽略的一点是:设备和驱动必须属于同一条 bus。一个 I2C 设备不会被 platform 驱动直接绑定,一个 SPI 驱动也不会接管 PCI 设备。

驱动排查时可以先看这三个问题:

  • 设备有没有出现在 /sys/bus/<bus>/devices/
  • 驱动有没有出现在 /sys/bus/<bus>/drivers/
  • 设备名、compatibleid_table 或 modalias 是否能被这条 bus 的 match 规则命中。

只要 bus 选错了,后面再怎么 echo bind 都不会变成正确设计。

三、自动绑定链路:设备先来还是驱动先来都可以

Linux 驱动模型设计得比较灵活:设备可以先注册,驱动也可以先注册。无论谁先来,后来的那个对象都会触发一次匹配流程。

设备先注册时,大致链路是:device_register 进入设备模型,挂到所属 bus,随后尝试为它寻找合适驱动。驱动先注册时,大致链路是:driver_register 挂到所属 bus,然后遍历这条 bus 上已有设备,看有没有能匹配的对象。

从驱动开发者角度,不必死记所有内部函数名,但要记住几个关键动作:

  • bus.match
     判断设备和驱动是否匹配。
  • 匹配成功后,驱动核心准备进入 probe。
  • really_probe
     负责执行更完整的 probe 流程。
  • probe
     返回 0,绑定才算成功。
  • probe
     返回错误,绑定失败,设备仍可能等待后续重试。

3.1 probe 失败不等于 match 失败

调试里经常会把这两件事混在一起。match 失败,说明设备和驱动没有被认定为一对;probe 失败,说明已经认定为一对,但驱动接管设备时出问题了。

这两个阶段的排查方向完全不同:

  • match 失败:优先查 compatibleid_table、设备名、MODULE_DEVICE_TABLE、bus 类型。
  • probe 失败:优先查寄存器映射、中断、时钟、复位、regulator、pinctrl、依赖驱动。

尤其是 -EPROBE_DEFER。它不是普通失败,而是在告诉驱动核心:现在资源没准备好,等依赖就绪后再试一次。比如 regulator 还没注册、GPIO provider 还没起来、clock provider 还不可用,都可能触发延迟探测。

3.2 自动绑定最怕“看起来差一点”

有些问题看起来只是字符串差一点,实际会让自动绑定完全失效。比如设备树写的是:

demo@1000 {
    compatible = "vendor,demo-dev";     // 设备侧声明自己是什么硬件
    reg = <0x10000x100>;
};

但驱动里写的是:

staticconststruct of_device_id demo_of_match[] = {
    { .compatible = "vendor,demo-device" },   // 和设备树差一个后缀就匹配不上
    { }
};

这种情况下,驱动加载成功不代表 probe 会执行。因为驱动已经注册了,但总线 match 过不去。工程上遇到这类问题,不要先怀疑 probe 代码,而要先确认匹配依据是否一致。

四、手动绑定与排查:bind 是调试工具,不是捷径

很多开发板调试时,会用 sysfs 手动解绑和重新绑定驱动。常见路径长这样:

# 查看 platform 总线下某个驱动管理的设备
ls /sys/bus/platform/drivers/demo-driver

# 手动解绑设备,会触发驱动的 remove 路径
echo 1000.demo > /sys/bus/platform/drivers/demo-driver/unbind

# 手动重新绑定设备,如果匹配和资源都正常,会再次进入 probe
echo 1000.demo > /sys/bus/platform/drivers/demo-driver/bind

# 配合内核日志确认 remove/probe 是否按预期执行
dmesg -w

这套操作很有用,但它不能绕过驱动模型。手动写 bind 时,内核仍然会检查这个设备是否属于同一条 bus,是否能和这个 driver 匹配,当前是否已经绑定,设备状态是否允许重新 probe。

4.1 什么时候适合手动 unbind/bind

手动绑定最适合解决三类调试问题:

  • 验证 remove 和 probe 的资源释放、重新申请是否对称。
  • 修改设备树、驱动参数或依赖模块后,快速复现初始化流程。
  • 排查 probe 偶发失败、资源延迟准备、热插拔类状态异常。

但它不适合用来掩盖设计问题。如果系统每次启动都需要手动 bind 才能工作,通常说明自动匹配、资源依赖、模块加载顺序或设备描述存在问题。

4.2 常见失败原因要分层看

手动 bind 失败时,先不要急着改代码。建议按层次排查:

  • 设备路径错:echo 的设备名必须和 /sys/bus/<bus>/devices/ 下的名字一致。
  • 驱动路径错:写入的 bind 文件必须属于目标 bus 下的目标 driver。
  • 已经绑定:设备当前已有 driver,通常需要先 unbind。
  • 匹配失败:compatible、ID 表、名称规则没有命中。
  • probe 失败:资源、时钟、中断、pinctrl、regulator 或依赖驱动异常。
  • 延迟探测:返回 -EPROBE_DEFER,需要等待依赖驱动就绪。

这些问题都叫“bind 不上”,但修法完全不同。驱动工程里最关键的能力,就是把一个大现象拆回准确阶段。

五、驱动开发里的 bind 实战建议

写驱动时,我建议把 bind 相关排查做成一个固定清单。

第一步,确认对象是否存在。设备要能在对应 bus 的 devices 目录看到,驱动要能在对应 bus 的 drivers 目录看到。缺一个都不是 bind 问题,而是注册问题。

第二步,确认匹配表。platform 驱动重点看设备树 compatible 和 of_match_table;I2C/SPI 还要看设备 ID、modalias、模块自动加载;PCI 要看 vendor/device ID。

第三步,确认 probe 日志。建议在 probe 开头打印设备名和关键资源,在每个资源失败点打印明确错误码。不要只留一句“probe failed”,那会让后续排查非常难受。

第四步,确认 remove 对称。能 bind 上不代表能反复 unbind/bind。驱动要正确释放 IRQ、workqueue、timer、regmap、clk、regulator、pinctrl、字符设备节点等资源,否则重新绑定很容易留下脏状态。

第五步,正确看待 deferred probe。它不是敌人,而是内核处理依赖顺序的一种机制。真正要排查的是:依赖最终有没有注册成功,还是永远等不到。

六、总结

Linux 中的 bind 机制,通俗讲就是“内核把设备和驱动配对,并让驱动开始接管设备”。但从驱动开发角度,它不是一个简单开关,而是一套由 bus、device、driver、match、probe、remove、sysfs 共同构成的工程流程。

理解 bind 的关键,是把问题拆清楚:有没有设备、有没有驱动、是不是同一条 bus、match 有没有命中、probe 有没有成功、remove 能不能干净退出。只要这条链路清楚,probe 不进、手动 bind 失败、反复 unbind 后异常这类问题,都会变得可定位、可解释、可修复。

【往期推荐】

嵌入式驱动工程师必须掌握的几种电路

NFC 场强干扰 TP 问题复盘:别只盯误触,要看采样链路

一文讲透 Type-C 快充驱动原理

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 14:34:19 HTTP/2.0 GET : https://f.mffb.com.cn/a/504152.html
  2. 运行时间 : 0.212502s [ 吞吐率:4.71req/s ] 内存消耗:4,660.85kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ee3b0f3711dbbe058e946343e4442882
  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.000988s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001494s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000575s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001345s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001253s ]
  6. SELECT * FROM `set` [ RunTime:0.000462s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001367s ]
  8. SELECT * FROM `article` WHERE `id` = 504152 LIMIT 1 [ RunTime:0.000970s ]
  9. UPDATE `article` SET `lasttime` = 1787294059 WHERE `id` = 504152 [ RunTime:0.003903s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000572s ]
  11. SELECT * FROM `article` WHERE `id` < 504152 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000877s ]
  12. SELECT * FROM `article` WHERE `id` > 504152 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001103s ]
  13. SELECT * FROM `article` WHERE `id` < 504152 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002333s ]
  14. SELECT * FROM `article` WHERE `id` < 504152 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.020864s ]
  15. SELECT * FROM `article` WHERE `id` < 504152 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004492s ]
0.218511s