乐于分享
好东西不私藏

VFB:从虚拟总线构想到软件定义汽车的工程基石

VFB:从虚拟总线构想到软件定义汽车的工程基石

引言

在智能汽车时代,OTA、SOA 和中央计算架构已成为技术标配。但在二十年前,汽车电子架构曾长期处于“软硬深度耦合”的状态:应用层逻辑与底层寄存器操作交织,导致更换 MCU 时应用代码往往需要大规模重写。

2003 年,AUTOSAR 联盟提出了 虚拟功能总线(Virtual Functional Bus,VFB) 构想。这一设计的核心目标是通过一套系统级的抽象机制,实现应用软件与底层硬件及网络拓扑的完全解耦。

本章将分析 VFB 的设计哲学、实现机制,以及这种高度抽象在工程落地过程中带来的技术挑战与代价。


预备知识:术语对齐

为了准确理解后续讨论,首先明确文中涉及的核心术语:

  • SWC(Software Component,软件组件):应用层的功能原子单元(如“灯光控制算法”)。SWC 内部仅包含算法逻辑,不直接操作底层寄存器。
  • Port(端口):SWC 的交互接口。VFB 规定 SWC 必须通过端口收发数据。端口分为 R-Port(Required Port,数据需求方)和 P-Port(Provided Port,数据提供方)。
  • Interface(接口):端口上承载的数据契约。常见的有 Sender-Receiver Interface(异步数据流)与 Client-Server Interface(同步请求-响应)。
  • RTE(Runtime Environment,运行时环境):VFB 在特定 ECU 上的具体实现。RTE 是根据系统配置生成的代码层,负责将 SWC 的端口调用路由到正确的通信路径。
  • 具象化(Materialization):将系统级 VFB 模型转化为特定 ECU 上可执行的 RTE 代码的过程。

第一章:软件定义汽车的理论原点

在汽车电子的草莽时代,应用层代码和底层硬件是高度耦合的。一个典型的车身控制器(BCM)项目,车灯控制逻辑里散布着大量直接操作 GPIO 寄存器的代码:

/* 非 AUTOSAR 时代:应用逻辑直接操作硬件寄存器 */void HeadlampCtrl_10ms(void{    uint8 switch_state *((volatile uint8*)0xFFC00010);  /* 直读 GPIO 寄存器 */    if (switch_state 0x01{        *((volatile uint8*)0xFFC000200xFF;            /* 直写 PWM 寄存器 */    }}

这段代码绑死了特定 MCU 的寄存器地址。换一颗芯片,寄存器映射全变,应用层代码必须推翻重写——哪怕车灯控制的业务逻辑没有任何变化。

为了解决这个"硬件绑架软件"的死局,AUTOSAR 联盟提出了 VFB 构想:

VFB 不是一根物理存在的线束,也不是一段具体的 C 代码。它是一种纯粹的系统级架构抽象——在 VFB 视角下,所有 SWC 都"挂载"在同一条虚拟总线上,彼此之间的通信与物理部署完全无关。

在 VFB 架构下,同样的车灯控制逻辑变成了这样:

/* AUTOSAR SWC:通过 RTE 端口接口收发数据,不接触任何硬件 */void HeadlampCtrl_Runnable_10ms(void{    uint8 switch_state 0U;    Rte_Read_HeadlampCtrl_SwitchState(&switch_state);     /* 从 RTE 读取输入 */    uint8 pwm_duty (switch_state 0x01255U 0U;    (void)Rte_Write_HeadlampCtrl_PwmDuty(pwm_duty);      /* 向 RTE 写出输出 */    /* SWC 不知道信号来自哪个 GPIO,也不关心 MCU 型号 */}

从 *((volatile uint8*)0xFFC00010) 到 Rte_Read_HeadlampCtrl_SwitchState()——应用层与硬件之间被一道不可逾越的接口墙隔开了。


第二章:VFB 的核心哲学——强隔离与位置透明

VFB 的设计哲学可以归结为两条刚性约束:

  • 对内:强隔离。SWC 内部只允许包含纯粹的算法逻辑,绝对禁止出现任何直接操作硬件寄存器、调用特定 MCU 驱动函数的代码。
  • 对外:标准接口。SWC 如果需要与其他组件通信或读取传感器数据,只能通过 VFB 定义的标准化端口(Port)进行。

2.1 物理位置的透明性

假设有两个软件组件:负责计算车速的 SWC_SpeedCalc 和负责显示仪表的 SWC_Dashboard。它们通过一对 Sender-Receiver 端口连接。

在 VFB 架构下,SWC_SpeedCalc 根本不需要知道 SWC_Dashboard 部署在哪里:

  • 它们可能运行在同一个 ECU 的同一个 CPU 核心上——RTE 通过 RAM 变量赋值完成通信。
  • 它们可能运行在同一个 ECU 的不同 CPU 核心上——RTE 自动插入自旋锁或 IOC(Inter-OS-Application Communication)通道。
  • 它们甚至可能运行在相隔两米的两个不同 ECU 上——RTE 调用 COM 栈,数据通过 CAN 总线传输。

对于应用层开发者而言,这三种场景下的 SWC 代码完全一致。底层复杂的报文打包、网络传输、中断响应,全部被 VFB 屏蔽了。

2.2 ARXML 中的逻辑连接

VFB 的连接关系由 ARXML(AUTOSAR XML) 文件定义。以下是一个简化的连接描述示例:

<!-- VFB 系统级连接描述示例 --><ASSEMBLY-SW-CONNECTOR>  <SHORT-NAME>SpeedCalc_to_Dashboard</SHORT-NAME>  <PROVIDER-IREF>    <CONTEXT-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/System/SWC_SpeedCalc</CONTEXT-COMPONENT-REF>    <TARGET-P-PORT-REF DEST="P-PORT-PROTOTYPE">/SWC_SpeedCalc/pp_VehicleSpeed</TARGET-P-PORT-REF>  </PROVIDER-IREF>  <REQUESTER-IREF>    <CONTEXT-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/System/SWC_Dashboard</CONTEXT-COMPONENT-REF>    <TARGET-R-PORT-REF DEST="R-PORT-PROTOTYPE">/SWC_Dashboard/rp_VehicleSpeed</TARGET-R-PORT-REF>  </REQUESTER-IREF></ASSEMBLY-SW-CONNECTOR>

在这个描述中,仅定义了逻辑上的连接关系,而不涉及物理位置或通信介质。具体的映射工作在后续的系统配置阶段完成。


第三章:从虚拟到现实——具象化过程

VFB 描绘了一个完美的抽象模型,但微处理器无法直接执行一个"理论模型"。当系统设计完成、需要生成能在真实硅片上运行的代码时,VFB 就必须被"具象化"。

3.1 RTE:VFB 的实体代理

在单个 ECU 内部,VFB 被具象化为一段真实存在的 C 代码层——RTE(Runtime Environment)

RTE 负责接管 SWC 所有的端口调用,并根据系统配置将其路由到正确的位置:如果是同核内部通信,RTE 直接操作 RAM 变量;如果是跨核通信,RTE 插入同步保护机制;如果是跨 ECU 通信,RTE 调用下层 BSW 的 COM 栈发送报文。

3.2 代码生成——量体裁衣的艺术

不同于传统的静态库,RTE 代码是根据 ARXML 配置自动生成的。配置工具(如 DaVinci Configurator 或 EB tresos Studio)会扫描所有 SWC 的端口连接关系和 ECU 部署信息,为每种通信场景生成不同形态的 C 代码。

以同一个 VehicleSpeed 信号为例,RTE 生成器在不同部署场景下的产出差异极大:

场景 A:同核通信

/* RTE 生成代码示例:同核内部通信 *//* 采用 static inline 函数以兼顾效率与 MISRA 合规性 */static inline Std_ReturnType Rte_Write_pp_VehicleSpeed_Element(uint16 data{    Rte_Buffer_VehicleSpeed data;    return RTE_E_OK;}static inline Std_ReturnType Rte_Read_rp_VehicleSpeed_Element(uint16data{    if (data != NULL_PTR{        *data Rte_Buffer_VehicleSpeed;    }    return RTE_E_OK;}

场景 B:跨核通信

/* RTE 生成代码示例:跨核通信 *//* 必须调用 OS 的 IOC 机制以保证多核环境下的数据一致性 */Std_ReturnType Rte_Write_pp_VehicleSpeed_Element(uint16 data{    /* 调用 Inter-OS-Application Communication API */    return IocWrite_VehicleSpeed(data); }

场景 C:跨 ECU 通信

/* RTE 生成代码示例:跨 ECU 通信 *//* 数据通过 COM → PduR → CanIf → CAN Driver 发出 */Std_ReturnType Rte_Write_pp_VehicleSpeed_Element(uint16 data{    return Com_SendSignal(ComConf_ComSignal_VehicleSpeed_Tx&data);}

同一个 Rte_Write 调用,在三种部署场景下生成了完全不同的底层实现。这就是 VFB 具象化的核心价值:SWC 代码保持不变,由 RTE 根据部署配置实现“量体裁衣”。

3.3 配置爆炸:灵活性的第一笔账

这种"量体裁衣"的方式保证了灵活性,但也带来了第一个工程代价——配置爆炸

一个中等规模的车身控制器项目,通常包含 200~500 个通信信号。每个信号的 RTE 行为都取决于多个配置维度:部署位置、通信方向、数据类型(基本类型 vs. 复杂结构体)、是否需要 E2E 保护、是否涉及模式切换。排列组合下来,RTE 生成器需要处理的配置项轻松突破数千条。


第四章:理想的代价——性能损耗与代码膨胀

任何架构抽象都伴随着开销。VFB 追求极致的隔离,直接导致了 RTE 层的性能开销不可忽视。

4.1 调用栈深度的增加

在非 AUTOSAR 代码中,读取一个 ADC 转换值通常仅需一行指令:

raw_value ADC_Read(0U);  /* 直接调用驱动 API */

而在 VFB 架构下,若要实现由应用层同步触发硬件采样的时序链,必须使用 Client-Server (C/S) 接口,整个操作涉及多层封装:

  1. SWC 调用 Rte_Call_rp_Sensor_ReadValue(&data); 触发请求
  2. RTE 将该调用路由至 IoHwAb 提供的 Server Runnable
  3. IoHwAb(I/O 硬件抽象层)进一步调用 MCAL 层的 Adc_ReadGroup()
  4. ADC 驱动最终操作硬件寄存器

这种多层封装导致了调用栈深度的增加。在资源受限的 16 位或低端 32 位 MCU 上,每层函数调用产生的栈空间消耗累积起来可能达到数十字节。在 Task 栈空间本就紧张的情况下,这些额外开销可能成为系统稳定性的隐患。

4.2 “胶水代码”的体积膨胀

由于 RTE 需要为每一个端口连接生成特定的路由逻辑,当项目包含数千个信号时,自动生成的 Rte.c 和 Rte_*.h 文件规模可能达到数万行甚至更高。这种代码膨胀不仅考验编译器的优化能力,更占用了有限的 Flash 资源。

在某些资源受限的项目中,RTE 生成代码的 Flash 占用甚至可能接近或超过 SWC 业务逻辑代码的总和。


第五章:多核时代——数据一致性的挑战

在单核时代,VFB 的实现相对直接,同核通信本质上是内存变量赋值。但在多核架构下,VFB 的“位置透明性”承诺对数据一致性提出了更高要求。

5.1 数据撕裂风险

假设 SWC_A 在 Core 0 修改一个 64 位复合信号(如包含时间戳和车速的结构体),而 SWC_B 在 Core 1 几乎同时读取该信号。

在 32 位总线带宽下,结构体的写操作需要两个总线周期。如果 Core 1 在这两个周期之间发起读取,就可能读到“高 32 位为新值、低 32 位为旧值”的撕裂数据(Torn Read)。

5.2 RTE 的保护机制

为解决数据撕裂问题,RTE 必须引入同步保护机制。AUTOSAR 定义了以下几种标准手段:

  • 隐式通信(Implicit Communication):这是解决并发数据一致性的正统且高性能设计。当端口配置为隐式访问(Rte_IRead / Rte_IWrite)时,RTE 会在 Task 级别分配上下文本地缓存(Context-local buffer)。Task 启动时,RTE 将全局变量快照原子拷贝至缓存;Runnable 执行期间仅操作缓存;Task 结束时再原子写回。此机制彻底消除了执行期间由中断或高优先级 Task 抢占导致的变量跳变。
  • Exclusive Area(排他区域):通过关中断(单核)或自旋锁(多核)保护临界区。其代价是在同步期间,其他核心可能因锁竞争而产生等待开销。
  • 数据副本(Double Buffer):采用双缓冲区机制,写入方与读取方操作不同空间,完成后交换指针。这会增加 RAM 的占用。
  • IOC(Inter-OS-Application Communication):利用 OS 提供的专用通道实现跨核心通信,内部封装了原子操作或内核级保护逻辑。

这些机制在保证数据安全的同时,也带来了额外的 CPU 负载或内存消耗。在多核系统中,若 SWC 的核间部署规划不当,跨核通信的同步开销将显著推高系统总负载。

5.3 实时性与时序的约束

尽管 VFB 侧重于功能连接的抽象,但这并不意味着它缺乏时序控制能力。实际上,AUTOSAR 规范通过 TIMEX (Timing Extensions) 弥补了这一语义。

在 VFB 视图下,系统架构师可以使用 VfbTiming 定义端到端的时间链(Event Chain),并下发极其严格的时序约束,如延迟(LatencyTimingConstraint)和数据存活期(AgeConstraint)。这些架构层的约束将直接指导后续 RTE 调度逻辑的生成。

即便如此,由于底层物理隔离的存在,端到端延迟的累加仍需工程团队重点关注。例如:ADC 采样(5ms 周期)→ IoHwAb 缓存 → RTE 路由(10ms 周期)→ SWC 计算 → RTE 输出 → COM 封装(20ms 发送周期)。这类跨越多层缓存的链路延迟,往往是动力底盘域系统集成阶段的核心挑战。


第六章:当 VFB 遭遇 Complex Device Driver

在处理高性能外设(如高清雷达原始数据、千兆以太网视频流)时,部分开发者发现 VFB 的 Port 通信模型效率受限——每一帧数据经过 RTE 层的拷贝与路由可能带来不可接受的 CPU 开销。

此时,工程师通常会采用 CDD(Complex Device Driver,复杂驱动)。CDD 属于 BSW(基础软件层),但它在架构上拥有特殊地位:它被允许向下绕过标准的 BSW 分层限制,直接操作硬件寄存器。

然而,CDD 的“越权”具有极其严格的边界条件:在向上与应用层交互时,它必须在 VFB 上被建模为一个特殊的原子组件(ComplexDeviceDriverSwComponentType),并通过标准的 AUTOSAR Port 经由 RTE 进行数据交换。CDD 绝不能通过全局变量或直接的 C 函数调用破坏 VFB 的隔离防线。

/* CDD:绕过 VFB/RTE,实现高性能内存访问 */void CDD_EthVideoStream_MainFunction(void{    /* 声明帧长度 */    uint32 frame_length ETH_FRAME_MAX_SIZE;    /* 直接访问以太网 DMA 接收缓冲区 */    volatile uint8rx_buffer (volatile uint8*)ETH_DMA_RX_BASE;    /* 在现代带 D-Cache 的 MCU 上,必须先进行 Cache 无效化以确保读取真实硬件数据 */    Mcu_InvalidateDCache_By_Addr((uint32)rx_bufferframe_length);    ProcessVideoFrame(rx_bufferframe_length);  /* 零拷贝处理 */}

CDD 通过牺牲可移植性换取了性能。这段代码由于直接包含了特定硬件的寄存器地址和 Cache 操作 API,在更换芯片时必须重写。这从侧面印证了 VFB 的价值取向:VFB 用适度的性能换取可移植性,CDD 用可移植性换取极致性能。两者在 AUTOSAR 架构中是互补关系。


第七章:R24-11 演进——Software Clusters 打破静态边界

在传统的 AUTOSAR CP 架构中,VFB 最终被具象化为单一的 Rte.c,所有组件紧耦合在同一个构建工程中。然而,随着域控制器架构和独立 OTA 更新需求的爆发,这种静态链接的单体架构逐渐成为研发瓶颈。

为应对这一挑战,最新的 AUTOSAR 规范(如 R24-11)引入了 Software Cluster (SwCluC) 特性,彻底重塑了 VFB 的物理形态:

VFB 不再局限于单一的二进制文件,而是被切割到多个独立编译的软件集群中。跨集群的 VFB 连接不再通过 C 语言链接器的 Symbol 进行静态解析,而是依赖底层的代理模块(Proxy Modules)和二进制清单(Binary Manifest) 进行动态匹配与通信(SwCluC_Xcc)。

这一颠覆性扩展意味着,当某一个 SWC 发生变更时,它能够作为独立的集群被编译和刷写,而无需重新编译整个 ECU 的基础软件和其他应用集群。这是 VFB 架构在“软件定义汽车”时代实现敏捷迭代的关键演进。


第八章:常见误区 Q&A

Q:VFB 等同于 RTE 吗?

A:不等同。VFB 是一套系统级的设计抽象,定义了逻辑上的连接模型;RTE 则是 VFB 在特定 ECU 上的具体实现。简单类比,VFB 是建筑设计的结构蓝图,而 RTE 是根据蓝图浇筑而成的混凝土实体。

Q:既然存在性能损耗,VFB 的价值体现在哪里?

A:其核心价值在于保障软件资产的可复用性。没有 VFB 提供的标准隔离,跨平台的移植成本往往意味着大量的底层逻辑重写。VFB 使得应用层代码理论上无需改动即可在不同芯片上运行,这种工程效率的提升远超通过提升硬件算力来抵消抽象开销的成本。

Q:AP(Adaptive Platform)中是否延续了 VFB 的思想?

A:AP 将 VFB 的核心理念演进为面向服务的架构(SOA)。在 AP 中,组件间的交互通过 ara::com 提供的代理/骨架(Proxy/Skeleton)模式实现。虽然实现细节和术语发生了变化,但“接口与实现分离、通信与部署解耦”的设计原则一脉相承。


总结:确立应用与硬件隔离的工程规范

回看 VFB 的发展历程,它不仅是一次架构设计尝试,更是一场关于汽车软件标准化的大规模实践。

VFB 确立了现代汽车软件开发的核心纪律:先定义接口,再实现逻辑。它推行了“应用代码不得直接接触硬件”的工程准则,为软件资产跨平台、跨供应商的复用奠定了基础。尽管抽象层带来了不可避免的开销,但它所建立的协作规范已成为当今智能汽车软件架构的基石。


附录:RTE 通信机制对比表

通信类型
VFB 抽象
底层典型实现路径
适用场景
性能特征
同核通信 (Intra-Core)
Sender-Receiver
函数调用 / 内存变量赋值
同核内部数据交换
极高性能;通常无同步开销
跨核通信 (Inter-Core)
Sender-Receiver
IOC (Inter-OS-Application)
跨核心/跨安全分区
微秒级延迟;依赖硬件 IPC 通道
跨 ECU 通信 (Inter-ECU)
Sender-Receiver
COM -> PduR -> 总线驱动
跨节点控制信号交换
毫秒级延迟;受物理总线周期限制
服务调用 (Client-Server)
Client-Server
函数调用 (同核) / RPC (跨核)
诊断、标定与同步请求
同步阻塞;跨核 RPC 需底层打包为 S/R IOC 消息,伴随极大调度延迟

参考文献

  1. AUTOSAR Consortium. Virtual Functional Bus. AUTOSAR_EXP_VFB. R24-11.
  2. AUTOSAR Consortium. Specification of RTE. AUTOSAR_SWS_RTE. R24-11.
  3. AUTOSAR Consortium. Layered Software Architecture. AUTOSAR_EXP_LayeredSoftwareArchitecture. R24-11.
  4. Fennel, H.; Schmidt, H.; Biehl, J.; et al. (2006). Achievements and exploitation of the AUTOSAR development partnership. SAE Technical Paper 2006-21-0019.
  5. Fürst, S. et al. (2009). AUTOSAR — A Worldwide Standard is on the Road. 14th International VDI Congress.
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-20 08:42:12 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/643600.html
  2. 运行时间 : 0.234514s [ 吞吐率:4.26req/s ] 内存消耗:4,705.93kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=62e3fe62f330a0c2f813e53e6d6671ad
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001010s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001610s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000722s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000728s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001369s ]
  6. SELECT * FROM `set` [ RunTime:0.000619s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001557s ]
  8. SELECT * FROM `article` WHERE `id` = 643600 LIMIT 1 [ RunTime:0.006739s ]
  9. UPDATE `article` SET `lasttime` = 1779237732 WHERE `id` = 643600 [ RunTime:0.089040s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.001389s ]
  11. SELECT * FROM `article` WHERE `id` < 643600 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001422s ]
  12. SELECT * FROM `article` WHERE `id` > 643600 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001124s ]
  13. SELECT * FROM `article` WHERE `id` < 643600 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.007996s ]
  14. SELECT * FROM `article` WHERE `id` < 643600 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002218s ]
  15. SELECT * FROM `article` WHERE `id` < 643600 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003685s ]
0.241494s