当前位置:首页>Linux>Linux图形三部曲(2):Linux 图形硬件架构与显示管线全解析

Linux图形三部曲(2):Linux 图形硬件架构与显示管线全解析

  • 2026-06-30 10:33:48
Linux图形三部曲(2):Linux 图形硬件架构与显示管线全解析
上一篇我们把图像的像素构成、色彩模型、内存排布、光栅化等底层理论完整梳理完毕,这些是所有图形系统的基础,但真正让内存里的二进制数据变成屏幕上可见的画面,依靠的是一整套高度协同、时序严格的硬件体系。很多长期从事 Linux 图形开发、嵌入式显示调试、桌面显卡适配的工程师,都会被一类问题反复困扰:同样的系统镜像,换一块屏幕就黑屏;同样的分辨率和刷新率,有的平台流畅如丝,有的平台频繁掉帧;外接 HDMI/DP 显示器无法自动识别;画面出现固定方位的偏移、花屏、撕裂;视频播放时叠加 UI 会出现闪烁或图层错乱。这些问题几乎和上层应用、桌面环境无关,全部指向硬件架构、管线配置、时序匹配、内存交互这几个核心层面。
本文拆解 Linux 平台下从像素存储到屏幕点亮的全硬件链路。在现代任何一款搭载 Linux 的设备中,图形硬件的核心使命只有一个:以稳定的时序、规范的格式、无撕裂的状态,把内存中的像素数据高效送到显示面板。这个过程看似只是简单的数据搬运,但背后是一套经过数十年演进的专用硬件流水线,软件层面只能做参数配置与同步控制,无法改变硬件的底层工作逻辑,本文参考Bootlin官方资料。

一、图形硬件的两种核心形态:固定功能与可编程

在深入管线结构之前,必须先了解:图形硬件分为固定功能硬件可编程硬件两类,二者的设计目标、工作方式、驱动模型、功耗表现完全不同,这也是 Linux 图形栈分层设计的硬件依据。
固定功能硬件是由专用数字电路实现的硬件单元,内部逻辑通过硬件连线固化,没有指令集、不需要加载固件,仅通过寄存器配置完成工作。数据在内部以 FIFO 流水线方式流动,执行顺序不可更改,功能专一且不可扩展。它的优势是功耗极低、延迟稳定、响应速度快、可靠性极高,缺点是功能固定,无法通过软件升级扩展能力。在实际产品里,显示控制器、视频输出单元、图层混合模块、MIPI/HDMI 接口电路、基础 2D 加速模块几乎全部采用固定功能设计,这是为了保证显示输出的稳定性与实时性,毕竟画面输出一旦中断或错乱,会直接导致设备不可用。
可编程硬件则更接近专用处理器,拥有独立的运算核心、寄存器堆、缓存系统、指令集,需要加载固件才能运行,能够通过软件算法实现多样化的图像处理与渲染任务。它的优势是灵活性极强,可通过更新固件适配新算法,缺点是功耗高、调度逻辑复杂、延迟波动较大。GPU、高端图像 DSP、通用计算核心等都属于这类硬件。在 Linux 系统里,可编程硬件主要负责“生产像素”,比如 3D 渲染、UI 绘制、视频解码、图像特效处理;固定功能硬件则负责“输出像素”,二者分工明确、协同工作,构成了完整的图形硬件体系。
这种分工模式也直接决定了 Linux 内核的驱动架构:负责显示输出的 DRM/KMS 子系统,以适配固定功能硬件为核心;负责 3D 渲染的 Mesa 栈,则以适配可编程 GPU 为核心。理解这一点,就能明白为什么显示配置大多是简单的寄存器配置,而渲染驱动却需要复杂的命令流提交与任务调度。

二、显示管线的标准数据流:从内存到面板的完整路径

无论硬件平台是 x86 独立显卡、Intel/AMD 核显,还是 ARM 架构的瑞芯微、全志、NXP、三星 SoC,显示硬件的数据流路径完全一致,Linux 内核的 DRM 子系统正是基于这套通用硬件结构设计。
像素从内存到屏幕,必须依次经过:帧缓冲(Framebuffer)→ 图层单元(Plane)→ CRTC → 编码器(Encoder)→ 物理接口(Connector)→ 显示面板(Panel),这是硬件真实的物理链路,而非软件抽象概念,任何一个环节参数不匹配,都会导致显示失效或异常。
帧缓冲是整条管线的起点,它本质是一段用于存储完整帧像素的物理内存区域。在独立显卡上,它位于专用显存(VRAM/SGRAM),带宽高、延迟低,与系统内存相互隔离;在集成显卡与嵌入式 SoC 上,它直接占用系统 DDR 内存,由驱动通过 CMA 连续内存分配器预留,保证硬件 DMA 可以正常读取。帧缓冲本身只是纯粹的数据容器,不携带任何格式信息,硬件无法感知其中是 RGB 还是 YUV 格式、是 8bit 还是 10bit 色深、图像的宽高与对齐规则,这些关键参数必须由后续的图层单元来解析。同时,帧缓冲的物理地址必须满足硬件 DMA 的约束,多数平台要求行起始地址按 32/64/128 字节对齐,不足部分会填充空白字节,这部分填充区域就是我们常说的 Stride(行跨度)。在实际调试中,画面错位、纵向条纹、只显示半幅图像等问题,大概率是帧缓冲的地址对齐、Stride 计算、内存布局不满足硬件要求导致的。
图层单元(Plane)是显示控制器内部的核心功能模块,也是硬件图层合成的基础。一个显示控制器通常包含多个 Plane,分为主图层(Primary Plane)、叠加图层(Overlay Plane)与光标图层(Cursor Plane)三类。主图层是必需的基础图层,用于显示桌面、壁纸等背景画面,通常为全屏配置;叠加图层用于视频、悬浮窗、字幕等内容,支持硬件缩放、裁剪、位置偏移、Alpha 混合;光标图层专为鼠标指针设计,带宽占用极低、位置更新响应极快,不占用主线带宽。Plane 的核心作用是解析帧缓冲的像素格式,配置图像的源裁剪区域与目标显示位置,将处理后的像素流提交给 CRTC。现代显示控制器的 Plane 支持极强的硬件加速能力,可直接解析 RGB、YUV420、YUV422 等数十种像素格式,完成硬件旋转、镜像、缩放、全局透明度混合,多图层可按 Z-order 自动叠加。这也是视频播放器能够实现超低功耗置顶播放的原因:视频数据直接送入 Overlay Plane,由硬件完成合成,完全不需要 CPU 与 GPU 参与,功耗可降低 90% 以上。
CRTC是整条显示管线的控制核心,全称 Cathode Ray Tube Controller,名称源于早期 CRT 显示器,如今功能已经完全泛化。它承担两项不可替代的工作:一是图层硬件合成,将多个 Plane 输入的像素流按层级、透明度、位置混合为最终的一帧画面;二是生成严格的显示时序,包括像素时钟(PCLK)、行同步信号(HSYNC)、帧同步信号(VSYNC)、数据有效信号(DE)。时序是屏幕能够正常点亮的根本,屏幕只有在正确的同步信号下,才能准确采样像素数据。CRTC 决定了输出分辨率、刷新率、消隐期长度、同步信号极性、像素时钟频率,Linux 内核中的 drm_display_mode 结构体,存储的正是 CRTC 需要配置的全部时序参数。可以说,没有 CRTC 提供的时序,所有像素数据都只是无意义的电信号,无法形成完整画面。
编码器(Encoder)位于 CRTC 之后,负责信号格式转换。CRTC 输出的是并行数字 RGB 信号,布线多、抗干扰能力差,无法直接用于远距离传输,Encoder 会将其转换为对应接口所需的信号格式:转换为 TMDS 信号用于 HDMI/DVI 输出,转换为 LVDS/eDP 信号用于笔记本面板,转换为 MIPI DSI 信号用于手机与平板屏幕,转换为模拟信号用于 VGA 输出。Encoder 不处理任何像素内容,只做电气层面的格式转换,一个 Encoder 只能适配一种或少数几种物理接口,无法跨类型通用。
物理接口(Connector)是硬件与外部显示设备的连接端口,我们常见的 HDMI、DP、VGA、eDP、MIPI DSI、LVDS 都属于 Connector。它的硬件职责包括检测热插拔信号(HPD)、通过 I2C 总线读取显示器的 EDID 信息、提供供电与 DDC/CEC 通信通道、上报设备支持的分辨率与时序。在 DRM 驱动的枚举流程中,Connector 是整个配置的起点:驱动先扫描 Connector 状态,检测到设备接入后读取 EDID,解析出支持的显示模式,再选择对应的 Encoder,绑定 CRTC 与 Plane,最终启动显示输出。这也是 Linux 系统能够自动识别外接显示器、自动匹配分辨率的硬件基础。
整条链路的逻辑可以用一句话总结:帧缓冲存储像素,Plane 解析格式与位置,CRTC 生成时序与合成画面,Encoder 转换信号格式,Connector 对接外部设备,最终面板点亮像素。理解这五个模块的职责,就掌握了 Linux 显示硬件的核心框架。

三、主流显示设备技术与硬件特性差异

显示面板的技术类型直接决定了显示管线的时序要求、刷新策略、功耗设计与带宽需求,很多显示问题并非驱动或配置错误,而是面板本身的物理特性限制。目前主流的显示技术包括 LCD、OLED、EPD 电子墨水,早期的 CRT 与等离子显示器已逐步淘汰。
LCD是目前应用最广泛的显示技术,依靠液晶分子的旋转控制透光率,本身不发光,需要背光板提供光源。LCD 面板需要持续的像素扫描刷新,否则画面会快速消失,因此对 CRTC 的时序稳定性要求极高。根据面板特性,LCD 分为 TN、IPS、VA 等类型,TN 面板成本低但可视角度差,IPS 面板可视角度广、色彩还原好,是目前笔记本与显示器的主流选择。LCD 的响应速度在毫秒级,高速运动画面容易出现拖影,高刷新率模式可以缓解这一问题,但会显著增加功耗与带宽占用。
OLED属于自发光显示技术,每个像素独立发光,不需要背光模块,具有无限对比度、微秒级响应速度、超薄可弯曲等优势。OLED 像素在保持同一画面时不需要持续刷新,理论上支持可变刷新率与更低功耗,对显示管线的时序约束更宽松。但 OLED 存在像素老化、烧屏、寿命受限等问题,在车载、工业等长时间显示固定画面的场景中,需要驱动配合实现像素偏移、亮度调节等保护机制。
EPD电子墨水技术依靠带电粒子的电场移动成像,仅在画面切换时消耗功耗,静态画面完全零功耗,具有阳光下可读、护眼等特性,主要用于电子书、电子价签。EPD 面板不需要持续刷新,显示控制器只需要发送一次帧数据即可保持画面,响应速度慢、仅支持黑白或彩色灰阶显示,不适用于视频与动态 UI,其驱动逻辑与常规显示面板完全不同。
早期的CRT显示器依靠电子束扫描荧光粉成像,是 CRTC 名称的来源,需要严格的隔行扫描时序与较长的消隐期,功耗高、体积大、存在辐射,目前仅用于工业兼容场景。等离子显示器依靠等离子体激发荧光粉发光,对比度高、响应快,但存在烧屏、功耗高、发热大等问题,已被 LCD 与 OLED 完全替代。
理解不同显示技术的物理特性,就能解释很多工程中的疑问:为什么有些屏幕不支持 144Hz 高刷?为什么有些面板必须固定时序才能点亮?为什么 OLED 设备可以实现更低的显示功耗?这些都不是软件能够改变的,而是硬件本身的物理限制。

四、显示接口类型与桥接芯片的工程应用

显示接口是像素信号离开 SoC 后的传输通道,接口的电气特性、带宽、协议直接决定了最大分辨率、刷新率、是否支持音频与 HDR。在 Linux 设备中,常见的接口分为内部接口与外部接口两类,内部接口用于连接设备自带面板,外部接口用于外接显示器。
内部接口主要用于嵌入式、笔记本、平板设备,包括 DPI 并行接口、LVDS、eDP、MIPI DSI。DPI 是最简单的并行接口,24 根数据线传输 RGB 信号,搭配同步时钟与使能信号,成本低但抗干扰差、传输距离短,仅用于小板与近距离面板。LVDS 是低压差分信号接口,抗干扰能力强,曾广泛用于笔记本屏幕,目前逐步被 eDP 替代。eDP 是 DP 标准的嵌入式版本,带宽高、支持压缩与功耗控制,是现代笔记本的主流内部接口。MIPI DSI 是移动端与嵌入式设备的标准接口,采用高速串行数据包传输,1~4 通道可配置,布线少、功耗低、支持触控集成,是车机、平板、智能设备的首选内部接口。
外部接口主要用于桌面设备与扩展场景,包括 VGA、DVI、HDMI、DP。
VGA 是纯模拟接口,依靠电压变化表示颜色,无抗干扰设计,分辨率上限低,需要 DAC 转换电路,目前仅用于兼容老设备。
DVI 是第一代数字接口,分为模拟、数字、混合三种类型,基于 TMDS 差分信号,不支持音频,逐步被 HDMI 替代。
HDMI 是民用最普及的数字接口,兼容 DVI 电气层,支持音频、CEC 控制、HDR、VRR、8K 分辨率,属于专有标准,需要授权使用。
DP 是 VESA 推出的开放标准,4 通道高速串行传输,带宽远超 HDMI,支持 MST 多显示器、DSC 视频压缩、16K 分辨率,是高端桌面与专业设备的首选接口。
在实际硬件设计中,并非所有 SoC 都支持所需的接口类型,此时需要使用桥接芯片(Bridge)完成信号转换。常见的桥接场景包括 MIPI DSI 转 HDMI、LVDS 转 eDP、DP 转 VGA、RGB 转 LVDS 等。桥接芯片对主控制器是透明的,但会引入信号延迟、时序偏移、格式限制,驱动需要完成桥片的寄存器初始化、EDID 转发、HPD 信号同步、电源控制等操作。在嵌入式 Linux 调试中,桥接芯片配置错误是导致外接显示无信号、画面异常的常见原因。

五、显示时序:屏幕正常点亮的核心规则

显示时序是 CRTC 输出的一套完整信号节拍,是屏幕能够正确采样像素数据的关键,也是驱动调试中最容易踩坑的环节。时序配置错误会直接导致黑屏、花屏、闪屏、画面偏移、色彩错乱等问题,且很难从软件层面定位。
一行像素的传输时序分为四个阶段:行同步脉冲(HSYNC)、行后沿(HBP)、有效数据区(HACTIVE)、行前沿(HFP)。一帧画面的传输时序同样分为四个阶段:帧同步脉冲(VSYNC)、帧后沿(VBP)、有效行数据(VACTIVE)、帧前沿(VFP)。其中,同步脉冲用于通知屏幕一行或一帧的开始;后沿与前沿是消隐期,用于信号稳定与电路准备,不传输像素数据;有效数据区是真正的图像像素。
行总周期 HTOTAL 是 HSYNC、HBP、HACTIVE、HFP 之和,帧总周期 VTOTAL 是 VSYNC、VBP、VACTIVE、VFP 之和,像素时钟频率则由 HTOTAL × VTOTAL × 刷新率计算得出。以 1080P 60Hz 为例,像素时钟约为 148.5MHz,这是大多数 HDMI 与 DP 接口的标准时钟配置。
屏幕的 EDID 信息本质是一份时序参数表,存储了设备支持的所有分辨率、刷新率、同步极性、时钟范围等参数。Linux DRM 驱动通过 I2C 读取 EDID 后,解析出合法的时序参数,配置给 CRTC,屏幕才能正常点亮。如果驱动强行使用 EDID 之外的时序,屏幕会因无法识别信号而黑屏。在无 EDID 的嵌入式面板中,驱动必须使用厂商提供的固定时序参数,任何微小偏差都会导致显示异常。

六、渲染加速硬件:2D 加速器、DSP 与 GPU

显示管线负责将像素输出到屏幕,而渲染硬件负责生成像素,二者共同构成完整的图形硬件系统。渲染硬件分为 2D 专用加速器、DSP 与 GPU 三类,适用场景与性能功耗差异极大。
2D 专用加速器属于固定功能硬件,专门优化矩形拷贝(Bit Blit)、纯色填充、图像旋转、缩放、Alpha 混合、颜色键控、RGB 与 YUV 格式转换等基础操作。它的运算速度快、功耗极低,不需要复杂的驱动调度,在嵌入式 UI、开机 Logo、简单菜单等场景中,完全可以替代 GPU,将系统功耗降低一个数量级。
DSP是可编程图像处理器,拥有专用的信号运算指令集,适合执行滤波、降噪、锐化、色彩增强、目标检测等复杂图像处理算法。DSP 灵活性强,可通过固件更新算法,常用于智能摄像头、视频后处理、车载环视系统等场景。
GPU是专为 3D 渲染设计的并行处理器,核心执行顶点变换、光栅化、纹理采样、像素着色、深度测试、混合等操作,拥有大量运算核心、专用纹理单元与多级缓存系统。GPU 不参与显示输出,只负责将渲染完成的像素写入帧缓冲,由显示控制器完成后续输出。现代 GPU 也支持 GPGPU 通用计算,可用于 AI 推理、视频编码、科学计算等非图形场景。
在 Linux 系统中,2D 加速器与显示控制器集成在 DRM 驱动中,GPU 则由独立的渲染驱动管理,通过 DMA-BUF 实现帧缓冲共享,避免内存拷贝,提升系统性能。

七、图形内存系统与显示性能优化

内存系统是图形硬件的性能瓶颈所在,像素数据的读写、拷贝、同步、缓存一致性直接决定系统帧率与功耗。Linux 图形系统的内存优化围绕零拷贝、对齐约束、同步机制、缓存一致性四个核心展开。
图形内存分为专用显存、共享系统内存、CMA 连续内存三类。独立显卡使用专用显存,带宽最高、延迟最低,但成本高;嵌入式 SoC 普遍使用共享系统内存,CPU、GPU、显示控制器、VPU 共用 DDR,成本低但需要严格的带宽调度;CMA 内存是驱动预留的连续物理内存,专门用于硬件 DMA 访问,避免内存碎片导致显示异常。
帧缓冲的对齐约束是硬件强制要求,行起始地址必须按指定字节对齐,不足部分填充空白字节形成 Stride。缓冲区实际大小为 Stride × 高度 × 平面数,忽略 Stride 会导致内存越界、画面错位、内核崩溃。在 YUV420、YUV422 等平面格式中,还需要考虑多平面的地址对齐与偏移,这是调试 YUV 格式显示时的重点。
画面撕裂是图形系统最常见的问题,根源是显示控制器正在扫描前台缓冲时,CPU 或 GPU 同时修改缓冲数据,导致一帧画面同时包含新旧数据。解决办法是采用双缓冲或三缓冲机制:前台缓冲用于显示,后台缓冲用于绘制,等待 VSYNC 信号到来时执行页切换(PageFlip),仅交换缓冲指针,不拷贝数据,实现无撕裂显示。Linux 桌面环境、游戏、视频播放器全部依赖这种机制保证流畅度。
缓存一致性是内存系统的另一个关键问题。CPU 拥有多级缓存,硬件 DMA 直接访问物理内存,若 CPU 写入的数据未从缓存回写到内存,硬件会读取到旧数据,导致画面错乱。驱动必须在硬件读取缓冲前执行缓存清理(Clean),在 CPU 读取硬件写入的数据前执行缓存失效(Invalidate),或使用 Write Combine 非缓存映射,保证数据一致性。
Linux 图形系统的性能优化原则非常清晰:尽可能使用硬件加速模块,避免 CPU 参与像素处理;尽可能使用零拷贝共享内存,避免数据搬运;尽可能使用硬件图层合成,避免 GPU 全屏渲染;尽可能只更新局部脏区域,减少全屏重绘;尽可能匹配硬件原生格式,避免格式转换损耗。

八、总结

Linux 图形硬件架构并非复杂的黑盒系统,而是一套逻辑清晰、规则固定、可严谨推理的物理体系。从帧缓冲的像素存储,到 Plane 的图层解析,再到 CRTC 的时序生成、Encoder 的信号转换、Connector 的设备对接,最终到面板的画面显示,整条链路围绕正确、稳定、高效三个目标设计。固定功能硬件保证显示输出的可靠,可编程硬件提供渲染的灵活,内存系统保障数据流转高效,时序规则保证画面显示正常。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 21:44:20 HTTP/2.0 GET : https://f.mffb.com.cn/a/491345.html
  2. 运行时间 : 0.162864s [ 吞吐率:6.14req/s ] 内存消耗:4,630.55kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b2cb8a2360b34997c60acd8cd0ffa9e9
  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.000431s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000666s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000318s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000323s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000531s ]
  6. SELECT * FROM `set` [ RunTime:0.000229s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000570s ]
  8. SELECT * FROM `article` WHERE `id` = 491345 LIMIT 1 [ RunTime:0.025272s ]
  9. UPDATE `article` SET `lasttime` = 1783086260 WHERE `id` = 491345 [ RunTime:0.014926s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000816s ]
  11. SELECT * FROM `article` WHERE `id` < 491345 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.010231s ]
  12. SELECT * FROM `article` WHERE `id` > 491345 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001296s ]
  13. SELECT * FROM `article` WHERE `id` < 491345 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.012615s ]
  14. SELECT * FROM `article` WHERE `id` < 491345 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007442s ]
  15. SELECT * FROM `article` WHERE `id` < 491345 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003474s ]
0.166607s