当前位置:首页>Linux>Linux工控机屏幕亮度控制方法— 从踩坑到DDC协议

Linux工控机屏幕亮度控制方法— 从踩坑到DDC协议

  • 2026-07-01 14:36:44
Linux工控机屏幕亮度控制方法— 从踩坑到DDC协议

Linux工控机屏幕亮度控制方法 — 从踩坑到DDC协议

背景

由于项目需要,业主要求我们把工控设备的屏幕亮度做到可控:在非运营时段把屏幕亮度调到最低,达到节能效果。

我们的环境:

  • 操作系统
    : Fedora 23, MATE 桌面, 32位(比较老的系统)
  • 显示器接口
    : VGA
  • 目标
    : 在非运营时段降低屏幕亮度以节能

最终实测效果:屏幕最低亮度比最高亮度功率降低了约60%,节能效果非常可观。

看起来简单的一个需求,实际做起来踩了不少坑。

方案踩坑记录

方案1:写 sysfs 节点(无效)

sudo tee /sys/class/backlight/acpi_video0/brightness <<< 100

这是网上最常见的方案,但测试下来完全没有任何作用。原因是这个节点依赖于内核的背光驱动(acpi_video 或 intel_backlight),而我们的 VGA 外接显示器不在内核背光驱动的管理范围内,所以这个路径根本不存在或者写入无效。

方案2:xbacklight(无效)

xbacklight -set 50

xbacklight 底层走的也是内核的 backlight 子系统,和方案1本质一样,对 VGA 外接显示器同样无效。

方案3:xrandr 软件调光(看似有效,但节能效果微乎其微)

xrandr --output DP1 --brightness 0.7

这个方案确实可以让屏幕看起来变暗,但实际测试中发现把亮度降到最低,屏幕的功率变化微乎其微。

仔细了解原理后恍然大悟:xrandr 的 brightness 参数本质是软件修改显卡输出的色彩矩阵,白话说就是相当于给画面盖了一层暗色滤镜,但不影响屏幕的物理背光灯亮度,而背光灯才是耗电的根源。

总结:前三个方案全部失败。 方案1和方案2对VGA外接显示器无效;方案3看似有效但只是软件层面的"假暗",无法降低实际功耗。

方案4:DDC/CI 协议控制(最终方案)

最终找到的可行方案是通过 DDC/CI 协议 直接控制显示器。DDC 调节亮度可以直接影响屏幕的物理背光灯亮度,真正实现降低功耗。


DDC/CI 协议介绍

什么是 DDC/CI

在讲具体操作前,先搞清楚三个相关概念:

协议/标准
全称
作用
DDC
Display Data Channel
主机和显示器之间的通信通道,物理上复用在 VGA/HDMI 线缆的特定针脚里,本质是一条 I2C 总线
EDID
Extended Display Identification Data
显示器存在自身 EEPROM 里的只读数据,128字节,记录了显示器的型号、分辨率、色彩能力等信息,系统开机时自动读取
VCP
Virtual Control Panel
把显示器 OSD 菜单里的每个参数都编了号,通过 DDC/CI 协议读写。比如 0x10 就是亮度,0x12 是对比度

通俗地理解:

  • DDC
     → 通信线路(通讯协议)
  • EDID
     → 显示器的"身份证"(只读,系统自动用)
  • VCP
     → 显示器的"遥控器按键编号"(你用来调参数的)

使用 ddcutil 工具控制

安装 ddcutil

Fedora 23 的仓库里可能没有 ddcutil,需要手动编译安装:

# 安装依赖sudo dnf install gcc make i2c-tools i2c-tools-devel libdrm-devel# 下载源码(选择较老的兼容版本)wget https://www.ddcutil.com/tarballs/ddcutil-0.9.9.tar.gztar -xzf ddcutil-0.9.9.tar.gzcd ddcutil-0.9.9./configuremakesudo make install

加载 i2c 内核模块

DDC 协议依赖 i2c-dev 模块,这一步是关键,操作系统默认没有加载:

# 加载模块sudo modprobe i2c-dev# 设置开机自动加载echo "i2c-dev" | sudo tee /etc/modules-load.d/i2c.conf

检测显示器

# 检查 i2c 设备ls /dev/i2c-*# 正常情况下会看到以下输出/dev/i2c-0  /dev/i2c-1  /dev/i2c-2  /dev/i2c-3  /dev/i2c-4  /dev/i2c-5  /dev/i2c-6# 检测 ddcutil 能否识别显示器sudo ddcutil detect

正常情况下检测到支持 DDC 的显示器:

Display 1   I2C bus:             /dev/i2c-3   EDID synopsis:      Mfg id:           ELO      Model:            ELO ET2002L      Serial number:      Manufacture year: 2019      EDID version:     1.3   VCP version:         2.2

如果没有检测到显示器或 i2c-dev 未启用:

No displays found

如果找到显示器但不支持 DDC 协议:

Invalid display   I2C bus:             /dev/i2c-4   EDID synopsis:      Mfg id:           TCH      Model:            VGA      Serial number:      Manufacture year: 2021      EDID version:     1.3   DDC communication failed

读取和设置亮度

DDC/CI 中亮度对应的 VCP 特性码是 0x10

# 读取当前亮度sudo ddcutil getvcp 0x10# 设置亮度(0~100)sudo ddcutil setvcp 0x10 50    # 设为 50%sudo ddcutil setvcp 0x10 0     # 设为最低(关闭背光)

指定特定显示器

如果有多台 DDC 设备,可以通过以下方式指定:

# 方式一:通过 display 编号(最简单,--display后面跟的数字对应ddcutil detect 结果的Display后面的数字)sudo ddcutil --display 1 getvcp 0x10sudo ddcutil --display 2 setvcp 0x10 70# 方式二:通过 i2c 总线编号(注意总线地址可能会变化,--bus后面跟的数字对应ddcutil detect 结果的I2C bus字段后的/dev/i2c-x中的x)sudo ddcutil --bus 3 getvcp 0x10# 方式三:通过序列号(最稳定,不受插拔顺序影响,--sn后面的内容对应ddcutil detect 结果的Serial number字段)sudo ddcutil --sn "ABC123456" setvcp 0x10 70

推荐: 生产环境脚本中用 --sn 序列号方式,因为 i2c 总线编号和 display 编号可能在重启或重新插拔后发生变化。

同时控制所有显示器

ddcutil 本身不支持广播,可以用脚本实现:

for i in 2}'); do    sudo ddcutil --display $i setvcp 0x10 70done

通过编程实现 DDC/CI 控制

如果不希望依赖 ddcutil 工具,可以直接通过 C 语言操作 /dev/i2c-* 设备文件实现。DDC/CI 本质上就是通过 i2c 总线发送特定格式的数据包。

协议基础

参数
说明
DDC/CI 显示器 i2c 地址
0x37
固定地址
写地址
0x6E0x37 << 1
读地址
0x6F0x37 << 1 | 1
亮度 VCP 码
0x10
Brightness

C 语言实现

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include <sys/ioctl.h>#include <linux/i2c-dev.h>#define DDC_ADDR       0x37#define VCP_BRIGHTNESS 0x10static unsigned char calc_checksum(unsigned char dest, unsigned char *buf, int len) {    unsigned char cs = dest;    for (int i = 0; i < len; i++) cs ^= buf[i];    return cs;}int open_i2c(const char *bus) {    int fd = open(bus, O_RDWR);    if (fd < 0) { perror("open"); return -1; }    if (ioctl(fd, I2C_SLAVE, DDC_ADDR) < 0) { perror("ioctl"); close(fd); return -1; }    return fd;}int ddc_get_vcp(int fd, unsigned char vcp_code,                unsigned short *cur_val, unsigned short *max_val) {    unsigned char req[5];    req[0] = 0x51;    req[1] = 0x80 | 0x02;    req[2] = 0x01;    req[3] = vcp_code;    req[4] = calc_checksum(0x6E, req, 4);    for (int retry = 0; retry < 5; retry++) {        if (write(fd, req, 5) != 5) { perror("write"); return -1; }        usleep(200000);        unsigned char resp[20];        memset(resp, 0, sizeof(resp));        int n = read(fd, resp, 20);        if (n <= 0) { usleep(200000); continue; }        // 响应格式: [0]=0x6e [1]=0x88 [2]=0x02 [3]=0x00 [4]=vcp        // [5]=type [6]=maxH [7]=maxL [8]=curH [9]=curL [10]=cs        if (resp[0] == 0x6e && resp[1] == 0x80) {            printf("Null response, retry...\n");            usleep(300000);            continue;        }        if (n >= 10 && resp[0] == 0x6e && resp[2] == 0x02 && resp[4] == vcp_code) {            if (max_val) *max_val = (resp[6] << 8) | resp[7];            if (cur_val) *cur_val = (resp[8] << 8) | resp[9];            return 0;        }        usleep(200000);    }    return -1;}int ddc_set_vcp(int fd, unsigned char vcp_code, unsigned short value) {    unsigned char req[7];    req[0] = 0x51;    req[1] = 0x80 | 0x04;    req[2] = 0x03;    req[3] = vcp_code;    req[4] = (value >> 8) & 0xFF;    req[5] = value & 0xFF;    req[6] = calc_checksum(0x6E, req, 6);    if (write(fd, req, 7) != 7) { perror("write"); return -1; }    usleep(200000);    return 0;}int main(int argc, char *argv[]) {    if (argc < 3) {        fprintf(stderr, "Usage: %s <i2c-bus> <brightness 0-100>\n", argv[0]);        return 1;    }    int brightness = atoi(argv[2]);    if (brightness < 0 || brightness > 100) {        fprintf(stderr, "Brightness must be 0-100\n");        return 1;    }    int fd = open_i2c(argv[1]);    if (fd < 0return 1;    unsigned short cur = 0, max = 0;    if (ddc_get_vcp(fd, VCP_BRIGHTNESS, &cur, &max) != 0) {        fprintf(stderr, "Failed to read brightness\n");        close(fd); return 1;    }    printf("Current: %d, Max: %d\n", cur, max);    unsigned short target = (unsigned short)(brightness * max / 100);    printf("Setting brightness to %d (%d%%)\n", target, brightness);    if (ddc_set_vcp(fd, VCP_BRIGHTNESS, target) != 0) {        fprintf(stderr, "Failed to set brightness\n");        close(fd); return 1;    }    usleep(300000);    if (ddc_get_vcp(fd, VCP_BRIGHTNESS, &cur, &max) == 0) {        printf("Verified: brightness = %d\n", cur);    }    close(fd);    return 0;}

编译运行:

gcc -o ddc_brightness ddc_brightness.csudo ./ddc_brightness /dev/i2c-3 80

期望输出:

Current1, Max: 100Setting brightness to 80 (80%)Verified: brightness = 80

VCP 功能码速查表

除了亮度,DDC/CI 还支持很多显示器参数控制。以下是常用的 VCP 功能码:

图像质量

功能
功能码
值范围
说明
亮度
0x10
0-100
Brightness
对比度
0x12
0-100
Contrast
锐度
0x87
0-100
Sharpness
黑电平
0x92
0-100
Black Level

色温预设(0x14)可选值:1=sRGB, 2=Native, 5=6500K, 8=9300K 等

颜色调节

功能
功能码
值范围
说明
红色增益
0x16
0-100
Red Gain
绿色增益
0x18
0-100
Green Gain
蓝色增益
0x1A
0-100
Blue Gain
色调
0x90
0-100
Hue
饱和度
0x8A
0-100
Saturation

输入与电源

功能
功能码
说明
输入信号源
0x60
1=VGA, 3=DVI, 15=DP, 17=HDMI
Input Source
电源模式
0xD6
1=On, 2=Standby, 4=Off
Power Mode

音频

功能
功能码
值范围
说明
音量
0x62
0-100
Audio Volume
静音
0x8D
1=开/2=关
Audio Mute

查看你的显示器实际支持项

不同显示器支持的 VCP 码不同,建议先查看实际支持列表:

# 查看显示器声明支持的功能列表sudo ddcutil capabilities# 扫描所有已知功能码的当前值sudo ddcutil getvcp scan

注意事项

  1. VGA 接口的 DDC 支持
    :VGA 线通过第 9/12/15 针脚传输 I2C 信号,大多数现代显示器支持,但部分老显示器可能不响应 DDC/CI 命令
  2. i2c-dev 模块
    :必须先加载 i2c-dev 内核模块,否则无法操作
  3. 权限
    :操作 /dev/i2c-* 设备需要 root 权限
  4. 兼容性
    :Fedora 23 已停止维护,内核版本较老,建议安装 ddcutil 的较低版本(如 0.9.9)以保证兼容性
  5. 验证实际支持
    :操作前先运行 ddcutil capabilities 确认显示器支持哪些 VCP 功能码,避免操作不支持的码导致无响应

眼见为实

DDC亮度最高

 实测功率 13.5W

DDC亮度最低

 实测功率5.58W

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 03:50:03 HTTP/2.0 GET : https://f.mffb.com.cn/a/491953.html
  2. 运行时间 : 0.100143s [ 吞吐率:9.99req/s ] 内存消耗:4,390.92kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0e3b22af450a93d01fcfa2243199d965
  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.000540s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000655s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000257s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000258s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000491s ]
  6. SELECT * FROM `set` [ RunTime:0.000196s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000509s ]
  8. SELECT * FROM `article` WHERE `id` = 491953 LIMIT 1 [ RunTime:0.000424s ]
  9. UPDATE `article` SET `lasttime` = 1783108203 WHERE `id` = 491953 [ RunTime:0.019512s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000412s ]
  11. SELECT * FROM `article` WHERE `id` < 491953 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000592s ]
  12. SELECT * FROM `article` WHERE `id` > 491953 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004716s ]
  13. SELECT * FROM `article` WHERE `id` < 491953 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003537s ]
  14. SELECT * FROM `article` WHERE `id` < 491953 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001352s ]
  15. SELECT * FROM `article` WHERE `id` < 491953 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000597s ]
0.101759s