乐于分享
好东西不私藏

汽车软件工程师的生存指南

汽车软件工程师的生存指南

你的同行已经用AutoSAR(AUTomotive Open System ARchitecture,汽车开放系统架构)将软件交付周期缩短了40%,而你还在手工堆砌模块化代码?传统"裸写驱动+应用"的方式让ECU(Electronic Control Unit,电子控制单元)变得像一座屎山——换一个芯片就要重写底层,客户一个需求变更就能让你熬夜三周。

>_第一章 · 拆解应用层骨架

很多人在第一次看到AutoSAR分层架构图时直接眩晕:应用软件层(Application Layer,AppL)、RTE(Runtime Environment,实时运行环境)、BSW(Basic Software,基础软件层)……但请记住:你作为应用层开发者,99%的时间都在和SWC、Runnable、Ports打交道。不要试图跳过这些术语,它们是写出合格代码的前提。

$1.1 SWC(Software Component,软件组件)

在传统开发中,我们会把"车灯控制"、"温度采集"分别写成一个.c文件,然后通过extern或全局变量互相调用。AutoSAR把这种独立的功能单元抽象为SWC(软件组件)。"每一个SWC可以理解为一个.c文件,而整个应用软件层就是一个文件夹"。但这里有一个巨大的陷阱:SWC之间不能直接调用函数或访问全局变量!所有交互必须通过端口(Ports,端口)和接口。这就强制了模块间的低耦合。你需要记忆的第一个重点来了:

★ 重点:一个SWC对应一个原子级的软件功能(比如"左车门开关逻辑"),它在代码层面表现为一个独立的C文件(.c/.h),但内部必须包含若干Runnable(可运行实体)并通过RTE(Runtime Environment,实时运行环境)暴露的API与外界通信。SWC的实例化由RTE管理。

在实战中,如果你要新增一个"雨量传感器处理"功能,你就需要创建一个新的SWC。工具链(比如Vector的DaVinci Developer)会帮你生成框架代码,但手写时也必须遵循相同的命名和接口规范。

$1.2 Runnable(Runnable Entity,可运行实体)

Runnable是SWC内部真正干活的线程单元。你可以把它理解为一个被RTE周期性调用或事件触发的C函数。每个Runnable都是原子执行单元,不能中途阻塞或死等。回忆一下你以前写的while循环等待标志位的代码——在AutoSAR的世界里,那会被视为灾难,因为会拖垮整个OS(Operating System,操作系统)的调度。

一个SWC叫做"调光控制器",里面会包含两个Runnable:Runnable_ReadSwitch(事件触发:开关状态变化)和Runnable_ControlLamp(周期触发:每10ms计算一次输出)。重点来了:

★ 重点:Runnable的原型必须为 void Runnable_Name(void) (无参数,无返回值)。RTE通过任务调度器调用它们。你不能在Runnable内创建线程或者无限循环。所有跨Runnable的数据共享必须使用RTE内部变量或显式端口通信。

当你手写时,每个Runnable就是一个不带任何参数的函数。例如:

voidRte_Runnable_ReadSwitch(void) /* 通过Rte_Read接口获取端口数据 */ }

。记住:Runnable的名字不是自由发挥的,需要在SWC描述文件(ARXML,AUTOSAR XML)中定义,并与代码中的函数名严格匹配

$1.3 Ports(端口)与接口 

如果一个SWC不和其他SWC通信,那它就是个孤岛。AutoSAR通过端口(Ports,端口)来定义SWC的对外交互点,而端口必须绑定一种接口(Interface,接口)。最常用的两种接口类型:

  • Sender-Receiver(S/R,发送-接收接口)
    :用于数据广播,比如一个SWC发送当前车速,多个SWC接收。对应代码中就是写/读一个数据元素。
  • Client-Server(C/S,客户端-服务器接口)
    :用于函数调用,比如一个SWC调用另一个SWC提供的"计算燃油消耗"服务。对应代码中是RPC(远程过程调用)风格的函数调用。

车门开关SWC(发送者)通过S/R接口将"车门状态"发送给顶灯逻辑SWC(接收者)。你需要注意:端口的方向——PortRoles:提供端口(PPort,提供者端口)和需求端口(RPort,需求端口)。用语言实现时,你看到的是一堆RTE生成的宏,比如Rte_Write__(写数据)和Rte_Read__(读数据)。不要试图直接调用其他SWC的全局变量,那是犯规的。

💡 端口定义在ARXML中,代码中只能通过RTE API访问。开发工具(如DaVinci Configurator Pro)会自动生成Rte_<swc名字>.h,里面声明了所有可用的RTE读写接口。你只需要包含该头文件并调用即可。

>_第二章 · VFB(虚拟功能总线)与RTE

很多从单片机裸机转到AutoSAR的工程师最不适应的就是"通信方式"。以前你直接extern一个变量,或者直接调用其他模块的API,多么简单粗暴!但AutoSAR凭什么能让你换硬件不换代码?答案就在VFB(Virtual Function Bus,虚拟功能总线)RTE(Runtime Environment,实时运行环境)这一对黄金搭档上。

$2.1 VFB 

"VFB是意义上的片内外通信的结合体",它屏蔽了物理通信介质(是同一ECU内部还是跨ECU的CAN总线)。设计阶段,你只需要画连接器(Connector,连接器)把两个SWC的端口连起来,至于数据是通过共享内存传输,还是通过CAN(Controller Area Network,控制器局域网络)报文转发,VFB的底层实现(RTE+BSW)会自动处理。这是AutoSAR最伟大的抽象之一。

★ 重点:VFB(虚拟功能总线)是一个逻辑通信架构,允许SWC在设计时忽略硬件拓扑。在代码生成阶段,RTE会根据映射关系自动生成片内通信代码(基于共享内存/全局变量的高效方案)片外通信代码(基于CAN/LIN/Ethernet协议栈)。开发者不需要手动编写CAN打包拆包逻辑。

一个例子:左右车门开关(位于车门ECU)和顶灯控制器(位于顶部ECU)之间的通信,在VFB图上就是一根简单的连接线。实际上跨ECU走的是CAN总线。当你写代码时,在车门SWC内部你依然调用Rte_Write_DoorState(closed),而顶灯SWC中调用Rte_Read_DoorState(&state)。你根本不用关心CAN ID、DLC(Data Length Code,数据长度码)这些东西——底层BSW的COM(Communication Stack,通信协议栈)模块会帮你映射好。但是你必须清楚:跨ECU的通信会带来延迟和可靠性问题,你的Runnable设计要容忍这种异步性

$2.2 RTE 

如果说VFB是逻辑总线,那么RTE就是它的物理实现(至少对于片内通信而言)。RTE是AutoSAR最核心的生成代码,它负责连接应用层SWC与底层BSW,以及SWC之间的交互。当你用工具配置好端口连接之后,RTE会生成一系列函数:

  • Rte_Write__(value) —— 供发送者SWC调用,将数据写入RTE内部缓冲区。
  • Rte_Read__(&value) —— 供接收者SWC调用,从RTE缓冲区读取最新数据。
  • Rte_Call_ (arguments) —— 用于C/S接口,客户端调用服务端提供的函数。
  • Rte_Run_() —— 由操作系统调度器调用,触发Runnable执行。

除了通信,RTE还提供了其他运行时服务,比如Rte_StartTimer/StopTimer(定时器)、Rte_Event_xxx(事件触发)。这些API必须在SWC的C代码中使用。你绝对不要越过RTE直接访问BSW层(例如直接调用某个MCAL(Microcontroller Abstraction Layer,微控制器抽象层)的驱动函数),那样就破坏了"软硬件隔离"的核心优势。

🚨 严禁在应用层代码中包含任何硬件寄存器操作或特定MCU的宏定义。一旦你写了*(volatile uint32*)0x40021000 |= (1<<2);,你的代码就和硬件锁死了,换了芯片全部重写。这就是使用AutoSAR前原始状态的最大痛点,AutoSAR就是要消灭这种代码。

根据AutoSAR官方方法论,应用层的所有需求应该通过Ports(端口)表达,然后由RTE在背后转化成对BSW模块的调用。例如想获取一个ADC(Analog-to-Digital Converter,模数转换器)的采样值,你的SWC需要通过一个ECU抽象层的端口来读取,而不是直接操作ADC寄存器。工具链会帮你生成这些代码,请严格遵循分层调用原则。

$2.3 连接器(Connector)与部署

一个顶灯的7个SWC被分配到两个ECU上。这种"分配"在AutoSAR中是通过系统配置(System Configuration)完成的。连接器(Connector)绑定两个端口,同时会定义通信的类型:内部连接(Internal Connector)(同一ECU内)或跨ECU连接(External Connector)。在代码层面,内部连接生成的RTE API是直接内存拷贝(或引用),效率极高;而跨ECU连接,RTE会调用COM模块的信号发送/接收函数,并将数据打包成网络信号。因此,你写代码时不需要关心连接是内部的还是外部的,但你需要知道:跨ECU的数据应当尽量设计为周期较长的信号,避免大量高频数据阻塞总线

至此,你应该能理解AutoSAR的核心哲学了:通过VFB统一通信视图,通过RTE生成可移植的代码

>_第三章 · 从概念到代码

说一万遍不如写一行代码。手写符合AutoSAR规范的应用层C代码的五大铁律。即使你没有Vector或ETAS工具链,纯手写SWC时也必须遵守这些规则,否则后续集成RTE时会直接编译失败或运行紊乱。

$3.1 铁律一:每个SWC独立成文件,文件命名必须与SWC名称一致    

假如你设计了一个SWC叫DoorSwitch_SWC,那么你必须创建DoorSwitch_SWC.c和DoorSwitch_SWC.h。头文件中包含RTE生成的接口头文件(通常是Rte_DoorSwitch_SWC.h),并且声明所有Runnable函数。示例结构化要求:

// DoorSwitch_SWC.h 必须包含 Rte 头文件

#include "Rte_DoorSwitch_SWC.h"

// 声明Runnable(由RTE调用)

void Runnable_ReadDoorSensor(void);

void Runnable_CheckDebounce(void);

注意:不要在头文件中声明任何全局变量供其他SWC访问。所有跨SWC数据必须通过端口接口。

$3.2 铁律二:Runnable实现为无参无返回值的函数,且只能通过RTE API访问外部数据    

一个典型的Runnable内部会做三件事:通过Rte_Read_xxx读取输入端口的数据,执行本地算法,然后通过Rte_Write_xxx写出结果。不允许调用非RTE提供的阻塞延迟函数(比如delay_ms()),也不允许无限轮询等待标志。如果必须等待异步事件,应使用RTE的事件机制(Rte_Event_xxx)重新设计状态机。

★Runnable_ControlLight 的流程

1. 调用 Rte_Read_DoorState(&doorState) 读取车门状态;

2. 调用 Rte_Read_LightSwitchMode(&mode) 读取顶灯模式;

3. 根据状态机算出目标亮度值;

4. 调用 Rte_Write_LampIntensity(targetIntensity) 输出到顶灯执行器SWC。

整个过程没有阻塞,执行时间 < 1ms。

$3.3 铁律三:数据一致性保护 —— 使用RTE提供的互斥机制或原子访问    

由于Runnable可能被中断或不同任务触发(比如多个周期任务),共享数据可能产生竞态条件。AutoSAR RTE提供了两种方式:1) RTE内部数据通信默认是原子性的(对于基本数据类型,读写是原子的);2) 如果数据是复杂结构体,应使用Rte_IWrite/ Rte_IRead 配合独占区域或显式调用Rte_EnterCriticalSection/ExitCriticalSection。写代码时,禁止自己使用全局关中断的方式(那会破坏OS实时性),必须通过RTE提供的临界区API。

$3.4 铁律四:严格遵守数据类型规范 —— 使用AutoSAR定义的标准类型    

不要直接用int、unsigned long这类模糊类型。AutoSAR规定应用层必须使用平台无关的类型别名,例如uint8, sint16, boolean(定义在Std_Types.h中)。同样,所有端口接口的数据类型必须在ARXML中明确定义,代码里保持严格一致。如果接口传递一个VehicleSpeed_Type结构体,你的代码就必须包含该结构体的定义,并且不能擅自增加字段

$3.5 铁律五:工具链协作 —— 不要逞英雄,让Matlab/Simulink和DaVinci做苦力    

MATLAB/Simulink + DaVinci。Simulink用于建模应用层算法(比如扭矩控制、灯光逻辑),然后自动生成C代码(符合AutoSAR标准)。DaVinci Configurator Pro用来配置BSW和RTE,生成RTE API。绝大多数主机厂和供应商不允许完全手写SWC,因为手写出错的概率太高。但你作为工程师,必须能读懂生成的代码,并能手动修正部分Runnable逻辑。因此,:即使使用工具链,你仍然需要理解手写准则,因为总会遇到需要手写复杂驱动(CDD,Complex Device Driver)或修补生成代码的边界情况。根据AutoSAR规范,复杂驱动(CDD,Complex Device Driver)是唯一允许绕过部分标准BSW模块的地方,但CDD也必须遵循端口接口封装。

⚙️ 参考工具链流程:

  1. 在Matlab/Simulink中设计应用逻辑,配置好SWC端口和Runnable;
  2. 用Simulink Coder/Embedded Coder生成符合AutoSAR的C代码(带RTE API调用);
  3. 将生成的SWC代码导入DaVinci Developer,进一步配置RTE映射;
  4. 使用DaVinci Configurator Pro生成整个工程的RTE和BSW配置;
  5. 最后集成所有代码,编译链接。手写代码出现在步骤2的修正或步骤5的CDD实现中。

$3.6 最后一块拼图:你该如何"写出符合标准的代码"?    

综合以上五条铁律,手写一个SWC的核心骨架如下

  • 包含RTE头文件后,所有对外交互都是Rte_Read/Write/Call;
  • 每个Runnable对应一个短小精悍的函数,没有任何阻塞点;
  • 使用AutoSAR标准类型,不直接操作硬件;
  • 如果用到周期性触发,在ARXML中配置Runnable的周期时间,而不是在代码里写while(1){ delay(); }。

当你能够闭眼写出这样的Runnable结构时,你就真正跨越了从"会写"到"会写AutoSAR应用层代码"的鸿沟。

写在最后:那些还在用"裸机思维"写汽车软件的同事,已经在ECU集成测试中被AutoSAR的无缝重配能力按在地上摩擦。供应商更信任能用RTE API解释数据流的人,而不是一个只会点灯的老手。


关注公众号领取资料

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-14 22:39:48 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/749493.html
  2. 运行时间 : 0.289153s [ 吞吐率:3.46req/s ] 内存消耗:4,710.73kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=fe8895bc59a0901f8a475c39ca6e57e0
  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.001036s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001563s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.014577s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000706s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001424s ]
  6. SELECT * FROM `set` [ RunTime:0.000476s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001273s ]
  8. SELECT * FROM `article` WHERE `id` = 749493 LIMIT 1 [ RunTime:0.002819s ]
  9. UPDATE `article` SET `lasttime` = 1781447988 WHERE `id` = 749493 [ RunTime:0.024766s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.001693s ]
  11. SELECT * FROM `article` WHERE `id` < 749493 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.032394s ]
  12. SELECT * FROM `article` WHERE `id` > 749493 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.017052s ]
  13. SELECT * FROM `article` WHERE `id` < 749493 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005138s ]
  14. SELECT * FROM `article` WHERE `id` < 749493 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002795s ]
  15. SELECT * FROM `article` WHERE `id` < 749493 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004944s ]
0.293097s