当前位置:首页>Linux>使用 eBPF 检测 Linux 上的摄像头开关事件并自动控制灯光

使用 eBPF 检测 Linux 上的摄像头开关事件并自动控制灯光

  • 2026-04-13 08:45:02
使用 eBPF 检测 Linux 上的摄像头开关事件并自动控制灯光

想了解如何利用eBPF技术在Linux系统中检测摄像头开关事件并自动控制灯光吗?从内核函数追踪到用户空间程序的联动,这一创新方法将为您的视频通话体验带来智能化升级。

本文译自 Detecting camera on/off events for Linux and controlling lights automatically with eBPF - Shuhao's Blog[1]

使用 eBPF 检测 Linux 上的相机开关事件并自动控制灯光 - Shuhao's Blog

作者:Shuhao Wu,时间:2026-03-27

在 Linux 上,没有标准的方法可以获取相机打开或关闭的事件。在内核层面,有各种不同的相机 API,最常见的一个是 V4L2(Video4Linux),它没有内置机制来通知用户空间相机何时打开或关闭。在用户空间方面,如今大多数应用程序直接使用 V4L2,但这种情况正在逐渐转变为使用 libcamera 或 PipeWire。据我所知,V4L2 在用户空间端和 libcamera 也不支持相机开关事件。PipeWire 看起来似乎支持,但我不是专家,甚至无法让它正常工作 [1][2]

[1][3]
我尝试为相机启用 PipeWire 的结果是 Firefox 冻结,只有重启电脑后才得以解决。在我的 Chrome 安装中也无法正常工作。我的测试环境是在 Ubuntu (KDE) 25.10 上。

能够以编程方式响应相机开关事件非常有用。一个用例是在系统托盘中显示相机开关指示器,这对于没有开关 LED 的网络摄像头来说,这是一个虽不完美但很有用的替代方案。另一个用例可能是记录相机访问以用于审计目的。我个人关心的是在我开始视频通话时自动打开 Logitech Litra 灯光。但如果这些 API 都不提供这种事件,该如何实现呢?

这就是 eBPF 的用武之地。eBPF 是一种可以在 Linux 内核中的多个指令位置运行程序的技术。这些内核侧的程序随后可以将数据发送到相应的用户空间程序进行进一步处理。eBPF 通常用于在内核或用户空间函数的入口和出口处执行自定义程序以进行跟踪。我们可以利用这一机制,在启动/停止相机视频流的内核函数执行时运行自定义程序。该自定义程序随后可以发出相机开关事件,供其他程序订阅。这就是 CameraCoordinator[4] 项目所实现的功能。它可以检测相机开关事件、运行脚本,并在检测到事件时发送 DBus 信号。

CameraCoordinator 仓库还包含一个名为 Autolight 的程序。它的功能包括:

  • • 在相机打开和关闭时,打开和关闭 Logitech Litra 灯。
  • • 在系统托盘中充当相机开关指示器。
  • • 提供手动灯光开关控制以及亮度和色温设置。

下图展示了一个演示。如果你想下载并尝试使用,请前往 CameraCoordinator[5] 仓库并按照那里的安装说明操作。

camera-coordinator-demo.avif

CameraCoordinator 与 AutoLight(v1.1.0)演示,展示了相机状态和灯光控制。托盘图标上的灯光亮度和色温控制是在 1.2.0 版本中添加的,未在此演示中。

工作原理

CameraCoordinator 通过追踪两个内核函数 vb2_ioctl_streamon 和 vb2_ioctl_streamoff 来工作。根据文档、源码阅读和一些实验,似乎这些函数在相机捕获开始和停止时大多数情况下都会被调用 [2][6]。可以通过运行以下 bpftrace[7] 脚本来验证相机开启事件,同时打开相机(完整脚本在此处[8]):

 kprobe:vb2_ioctl_streamon {   $file = (struct file *) arg0;   if ($file == 0) {     return;   }   $dentry = $file->f_path.dentry;   if ($dentry == 0) {     return;   }   $name = $dentry->d_name.name;   printf("vb2_ioctl_streamon: file=%s\n", str($name)); // 这将输出 video0, video1 等。 }
[2][9]
如果驱动程序决定创建自定义的 IOCTL 处理程序并直接调用 vb2_streamon 和 vb2_streamoff,则似乎可以在不调用 vb2_ioctl_streamon/off 函数的情况下启动和停止摄像头捕获。然而,通过这些函数的参数无法轻松确定视频文件名,因此我选择使用更为不可靠(但仍足够可靠)的 vb2_ioctl_* 方法。我的理解是,有些摄像头并未使用 V4L2 实现,这意味着必须跟踪这些函数才能准确判断开关状态。

这个概念验证的 bpftrace 脚本可以检测摄像头的开启和关闭事件,但无法运行自定义脚本或发送 DBus 信号。使用具有良好 eBPF 支持的常规编程语言更容易实现这一点。我选择了 Golang,因为通过 cilium/ebpf[10] 库可以很好地支持 eBPF。代码比 bpftrace 脚本稍微复杂一些,并遵循以下流程:

  1. 1. 每当 vb2_ioctl_streamon/off 执行时,一个 eBPF C 程序[11] 就会运行。它能够读取传递给内核函数的参数。第一个参数是一个 struct file *,从中我们可以读取视频文件名。这很重要,因为这样我们就可以通过用户空间的 Go 程序检测它们的状态变化来跟踪哪个摄像头已打开或关闭。
  2. 2. eBPF 程序随后通过 eBPF 提供的环形缓冲区将此事件连同视频文件名发送到用户空间的 Go 程序。
  3. 3. 由于 vb2_ioctl_stream* API 并非 100% 可靠,Go 程序采用了 一种架构[12],允许使用不同信号源操作多个独立的检测器。这使得将来添加其他检测器变得容易,尽管目前唯一实现的检测器依赖于 vb2_ioctl。来自 vb2_ioctl 检测器的信号与其他检测器(如果有的话)合并。事件合并器随后生成摄像头的开启和关闭事件。
  4. 4. 基于合并的事件,程序在系统总线上发送 DBus 信号并运行 shell 脚本。
  5. 5. Autolight 程序作为单独的进程,监听这些 DBus 消息并打开任何连接的 Litra 灯光。

该数据流也显示在下图中:

已知问题

当前的一个问题是,当使用摄像头的进程未清理而关闭时,vb2_ioctl_streamoff 并不总是执行。为缓解这一问题,我尝试跟踪 vb2_fop_release,该函数在进程关闭且未调用 streamoff 时被调用。然而,由于该函数也会因其他原因被调用 [3][13],我不得不过滤事件,仅保留进程关闭的情况。为了检测这一点,我尝试查看调用 vb2_fop_release 的进程 PID 是否已被回收。这并不能很好地工作,因为它存在竞争条件,即 eBPF 事件可能在进程被内核完全回收之前触发(我认为)。因此,这并不完全可靠,偶尔会错过摄像头关闭事件。目前我没有更好的方法来检测这一点。如果你有,请给我留言[14]。要在当前代码库中解决这个问题,你必须正常打开和关闭摄像头。

事实证明,基于摄像头开启和关闭事件来开关灯光对于某些应用程序(如 Microsoft Teams)来说并不是最佳用户体验。Microsoft Teams 在你最终加入通话之前会多次打开和关闭摄像头,因为它有一个“预检查”屏幕。这会导致多次触发开关事件,从而在你加入通话时几次触发灯光开关。在我看来,这里的用户体验问题实际上并不是 Autolight 的问题,而是 Microsoft Teams 的问题。我想这并不令人意外。

[3][15]
例如,如果有任何进程打开视频设备文件并在未实际开启流的情况下关闭它,这种情况在尝试获取设备属性时很常见。

下一步

目前的检测方法仍然相当脆弱,但它确实适用于我使用 UVC 摄像头的场景。正如开头所述,Linux 生态系统正处于从 V4L2 向 libcamera + PipeWire 过渡的过程中。PipeWire 应该会使检测更加稳健。CameraCoordinator 的架构可扩展以支持 PipeWire,但当前实现可能过于依赖 V4L2,需要进行一些重构才能让 PipeWire 检测器正常工作。特别是摄像头事件结构和事件合并器都与 V4L2 绑定。

此外,该项目为摄像头的开启和关闭事件定义了自定义的 DBus 信号。理想情况下,这应该在 FreeDesktop 规范的标准下得到支持。

对于 Autolight 项目,如果能自动调整灯光的亮度和色温就更好了。这有点困难,因为 Linux(甚至 Windows)没有现成可用的亮度和白平衡传感器 [4][16]。不调整亮度和色温可能导致视频质量不佳,图像可能过曝或白平衡不准。目前,Autolight 程序允许通过托盘图标手动控制温度和亮度来缓解这一问题。这不是很好,因为很容易忘记,但目前是可以接受的。

[4][17]
我确实注意到可以从我的 Logitech BRIO 4K 网络摄像头查询白平衡温度,但似乎在摄像头关闭时该值并未改变,所以这行不通。

一些经验教训

以下是一些可能只对我自己有意义而对其他人无关紧要的个人笔记:

  • • eBPF(毫不意外地)功能强大,可以用于各种奇怪的用途。
  • • DBus 状态通知器“标准”尽管被广泛实现,并且是一个相对友好的标准,但它并不是 FreeDesktop 的正式标准。唯一坚持不采用的(一如既往)是 GNOME。Canonical 提供了一个几乎普遍安装的扩展来缓解这个问题。最近甚至有一些关于这个主题的争议[18]
  • • 构建 Debian 包仍然是一门深奥的艺术,而我在这方面做得并不好。
  • • AI 辅助编程对这个项目可能帮助不大,因为我需要学习很多东西,并且过度设计了最初的架构。在某些情况下,AI 生成的现有代码污染了我的上下文窗口,导致了一些严重的减速。而在其他情况下,它极大地帮助我更好地理解了 V4L2 系统(虽然不是完全理解,但足够完成任务)。不确定总体上是否提升了效率。

引用链接

[1] Detecting camera on/off events for Linux and controlling lights automatically with eBPF - Shuhao's Blog:https://shuhaowu.com/blog/2026/02-camera-coordinator.html[2][1]:#f1[3][1]:#footnote-reference-1[4]CameraCoordinator:https://github.com/shuhaowu/CameraCoordinator[5]CameraCoordinator:https://github.com/shuhaowu/CameraCoordinator[6][2]:#f2[7]bpftrace:https://github.com/bpftrace/bpftrace[8]完整脚本在此处:https://github.com/shuhaowu/CameraCoordinator/blob/7b66afc/scripts/trace-camera-rec-vb2-ioctl.bt[9][2]:#footnote-reference-2[10]cilium/ebpf:https://github.com/cilium/ebpf[11]一个 eBPF C 程序:https://github.com/shuhaowu/CameraCoordinator/blob/7b66afc/bpf/camera_detector_vb2_ioctl.bpf.c[12]一种架构:https://github.com/shuhaowu/CameraCoordinator/blob/a6ecd42/docs/development/architecture.md[13][3]:#f3[14]给我留言:https://github.com/shuhaowu/CameraCoordinator/issues[15][3]:#footnote-reference-3[16][4]:#f4[17][4]:#footnote-reference-4[18]争议:https://hackaday.com/2025/06/17/statusnotifieritem-how-standard-non-standards-tear-linux-desktops-apart/

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-15 14:55:29 HTTP/2.0 GET : https://f.mffb.com.cn/a/486158.html
  2. 运行时间 : 0.181089s [ 吞吐率:5.52req/s ] 内存消耗:4,797.75kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0d4f6d3d79c88644cc581d1c7d547995
  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.000873s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001395s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.006495s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.004357s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001396s ]
  6. SELECT * FROM `set` [ RunTime:0.011014s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001572s ]
  8. SELECT * FROM `article` WHERE `id` = 486158 LIMIT 1 [ RunTime:0.003958s ]
  9. UPDATE `article` SET `lasttime` = 1776236129 WHERE `id` = 486158 [ RunTime:0.026701s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.001124s ]
  11. SELECT * FROM `article` WHERE `id` < 486158 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001256s ]
  12. SELECT * FROM `article` WHERE `id` > 486158 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.006072s ]
  13. SELECT * FROM `article` WHERE `id` < 486158 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.016091s ]
  14. SELECT * FROM `article` WHERE `id` < 486158 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007289s ]
  15. SELECT * FROM `article` WHERE `id` < 486158 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004090s ]
0.183824s