当前位置:首页>Linux>为什么 Linux 内核代码到处是 for(;;),而不是 while(1)?

为什么 Linux 内核代码到处是 for(;;),而不是 while(1)?

  • 2026-01-04 06:40:57
为什么 Linux 内核代码到处是 for(;;),而不是 while(1)?

死循环也有"鄙视链"?从底层汇编看 for(;;) 的高级感


一、引言 —— 那个被忽略的"分号"

你有没有注意过一个奇怪的现象?

当你打开 Linux 内核源码,或者翻阅 FreeRTOS、RT-Thread 这样的工业级实时操作系统代码时,你会发现一个有趣的规律:几乎所有的无限循环,清一色地使用了这样的写法:

for (;;) {    // 任务调度、中断处理...}

而不是我们在学校里最熟悉的:

while (1) {    // 循环体}

这让很多初入行的程序员感到困惑:这二个光秃秃的分号到底有什么魔力?

也许你会觉得这只是大神们的个人癖好,又或者是某种"约定俗成"的潜规则。但当我深入研究后发现,事情远没有那么简单。

for(;;) 的背后,隐藏着汇编级别的优化考量、编译器警告的规避策略,以及一场延续了数十年的编码标准之争。

今天,就让我们揭开这个看似微不足道的分号背后,那些不为人知的技术内幕。


二、底层对峙 —— 编译器眼中的"1"与"空"

要理解 for(;;) 和 while(1) 的区别,我们必须回到问题的原点:编译器是如何看待它们的?

2.1 历史的遗迹:那个"多余"的比较指令

在计算机发展的早期,编译器的优化能力远没有今天这么强大。当时的编译器对代码的处理相当"老实"——你写什么,它就翻译什么。

对于 while(1) 这样的循环,编译器会这样理解:

  1. 1. 加载常量 1 到寄存器
  2. 2. 比较这个值是否为非零
  3. 3. 如果非零,跳转到循环开始处

翻译成汇编代码,大概是这样的:

loop:    MOV  R0, #1       ; 将常量 1 加载到寄存器 R0    CMP  R0, #0       ; 比较 R0 和 0    BNE  loop         ; 如果不相等,跳转回 loop

而对于 for(;;),由于它在语法结构上根本没有条件判断部分(三个位置全是空的),编译器直接生成一条无条件跳转:

loop:    B    loop         ; 无条件跳转回 loop

看到区别了吗?for(;;) 直接省去了 MOV 和 CMP 两条指令!

2.2 汇编级实测:眼见为实

让我们用一个真实的例子来验证这个说法。以下是两段简单的 C 代码:

代码 A:使用 while(1)

void loop_while(void) {    while (1) {        __asm__("nop");    }}

代码 B:使用 for(;;)

void loop_for(void) {    for (;;) {        __asm__("nop");    }}

当我们使用 GCC 在 -O0(无优化) 级别编译时,反汇编结果如下:

写法
汇编指令数
关键差异
while(1)
3-4 条
包含 MOV、CMP、条件跳转
for(;;)
1-2 条
仅无条件跳转

在某些古老的编译器或特定的嵌入式平台上,这种差异会更加明显。

2.3 现代编译器:差距被抹平了吗?

你可能会问:现在都 2026 年了,编译器应该早就能优化掉这个差异了吧?

答案是:是的,但也不完全是。

现代编译器(如 GCC 4.x 以后、Clang、MSVC)确实已经足够聪明,能够识别出 while(1) 是一个"恒真"条件,并在优化阶段将其转换为与 for(;;) 相同的无条件跳转。

但这里有几个关键的"但是":

  1. 1. 调试模式下优化不生效:当你使用 -O0 编译(调试时的默认选项),编译器不会进行任何优化,while(1) 的额外指令依然存在。
  2. 2. 嵌入式领域的特殊情况:很多嵌入式平台使用的编译器版本较老,或者为了代码体积和确定性,会关闭部分优化。
  3. 3. 代码一致性的考量:即使最终的机器码相同,for(;;) 在语义上更"纯粹"——它明确表达了"无条件循环"的意图,而 while(1) 则是"当 1 为真时循环",从逻辑上多了一层抽象。

结论:虽然现代编译器已经能抹平两者的性能差异,但 for(;;) 依然被视为更"底层"、更"纯粹"的无条件循环表达方式。


三、规范之争 —— 为什么 MISRA C 站队 for(;;)?

如果说汇编层面的差异还可以被"现代编译器已经优化了"这个理由搪塞过去,那么编码规范的要求就是一道无法绕过的硬门槛。

3.1 消除警告的"洁癖"

你有没有遇到过这样的场景?

当你在项目中使用 while(1) 并开启严格的编译器警告时,可能会收到这样一条提示:

warning: condition is always true [-Wconstant-condition]

或者在使用 PC-Lint、Coverity、Polyspace 等静态代码分析工具时,你会看到:

Warning 716: while(1) ...Info: Constant expression in controlling expression

这是因为静态分析工具认为:一个永远为真的条件,可能意味着逻辑上的冗余或者潜在的编程错误。

想象一下,如果一个程序员本意是写 while(x) 来根据变量 x 的值决定是否继续循环,却不小心写成了 while(1),这就是一个严重的 bug。静态分析工具无法区分这是"有意为之"还是"疏忽大意",所以它选择报警。

而 for(;;) 则不存在这个问题——它压根没有条件表达式,自然也就不会触发"常量条件"的警告。

3.2 MISRA C:汽车工业的"金科玉律"

说到编码规范,就不得不提 MISRA C

MISRA(Motor Industry Software Reliability Association,汽车工业软件可靠性协会)是一个由汽车制造商和零部件供应商组成的联盟,他们制定了一套极其严格的 C 语言编码规范,专门用于汽车电子系统的软件开发。

为什么是汽车行业?因为汽车软件的 bug 可能直接导致车毁人亡。刹车系统、安全气囊、自动驾驶……这些系统容不得半点差错。

MISRA C 规范对循环有着明确的要求:

Rule 14.3 (Required): Controlling expressions shall not be invariant.

翻译:控制表达式不得是恒定不变的。

这条规则的意思是:循环的条件表达式应该是可变的,而不是一个永远为真或永远为假的常量。

但是,MISRA C 同时也认可故意的无限循环是合法的使用场景(比如嵌入式系统的主循环)。那么如何区分"故意的无限循环"和"错误的常量条件"呢?

答案就是 for(;;)

MISRA C 的解释是:

  • • while(1) 是"当 1 为真时循环",存在一个布尔判断,属于"常量控制表达式"。
  • • for(;;) 是"无条件循环",语法上没有条件表达式,是对"永远循环"的直接表达。

语义上的细微差别,决定了两者在规范层面的不同待遇。

3.3 工业界的广泛认可

除了 MISRA C,其他工业编码规范也普遍推荐使用 for(;;)

规范/标准
适用领域
对无限循环的态度
MISRA C
汽车电子
推荐 for(;;)
CERT C
安全关键系统
允许 for(;;)
JSF AV C++
军用航空
要求使用 for(;;)
AUTOSAR
汽车软件架构
遵循 MISRA C

当你看到这些标准的适用领域——汽车、航空、军事、安全关键系统——你就会明白,这不是什么"代码洁癖",而是用生命换来的经验教训

在这些领域,代码不仅要能运行,还要能通过严格的审计和认证。使用 for(;;) 而非 while(1),是让代码"合规"的最简单方式。


四、内核美学 —— 大神们的"代码执念"

抛开汇编优化和编码规范,让我们从另一个角度来审视这个问题:代码风格与美学

4.1 Linus Torvalds 的哲学

提到 Linux 内核,就不得不提它的创造者 Linus Torvalds

Linus 是出了名的"代码洁癖患者"。他曾多次在邮件列表中因为代码风格问题与其他开发者激烈争论。在他看来,代码不仅要能运行,更要优雅

Linux 内核有一份官方的编码风格指南(Linux Kernel Coding Style),其中虽然没有强制规定必须使用 for(;;),但翻遍整个内核代码库,你会发现无限循环几乎清一色都是这种写法。

这是一种约定俗成的默契

4.2 视觉简洁性:避开"魔法数字"

从代码审美的角度来看,for(;;) 有一个明显的优势:它避开了数字 1 这个"魔法值"(Magic Number)

什么是魔法值?就是那些突然出现在代码中、没有明确含义的数字。

while (1)     // 这个 1 是什么意思?为什么不是 2?while (true)  // 需要引入 stdbool.h,而且 true 可能被重定义for (;;)      // 纯粹的"循环",无需解释

对于追求代码简洁的程序员来说,for(;;) 就像是一个完美的极简主义作品:

  • • 没有多余的字符
  • • 没有需要解释的"魔法值"
  • • 直接表达了"永远循环"的意图

4.3 开源社区的"技术名片"

在开源世界中,代码风格往往是一个项目"技术水平"的标志。

当你打开一个开源项目,看到满屏的 for(;;),你会立刻意识到:这是一群懂底层、重规范的工程师写的代码

相反,如果看到 while(1) 或者 while(true),你可能会觉得这个项目更偏向应用层,或者作者对底层规范不太熟悉。

这不是歧视,而是一种技术信号。

让我们看看一些顶级开源项目的选择:

项目
主要领域
无限循环写法
Linux Kernel
操作系统内核
for(;;)
FreeRTOS
实时操作系统
for(;;)
RT-Thread
物联网操作系统
for(;;)
U-Boot
引导加载程序
for(;;)
Nginx
Web 服务器
for(;;)
Redis
内存数据库
for(;;)

当整个行业的顶级项目都在使用同一种写法时,这就不再是"个人偏好",而是一种"行业共识"。

4.4 一种"专业程序员"的自我认同

说到底,选择 for(;;) 还是 while(1),在很多时候已经超越了技术层面的考量,变成了一种身份认同

就像武侠小说中的门派之争,for(;;) 派和 while(1) 派各有拥趸。但在底层开发、嵌入式系统、操作系统这些"硬核"领域,for(;;) 无疑占据着主导地位。

使用 for(;;),某种程度上是在向其他程序员传递一个信号:"我懂底层,我重规范,我是认真的。"


五、扩展思考 —— 那些"骚操作"无限循环

除了 for(;;) 和 while(1),程序员们还发明了一些更"有趣"的无限循环写法。

5.1 goto 大法:最原始的跳转

在 C 语言的远古时代,goto 语句是实现循环的主要手段。即使到了今天,在某些底层驱动代码中,你依然能看到这样的写法:

loop:    // 执行某些操作    goto loop;

这种写法的优点是极其直白——它直接告诉 CPU:"跳回去,继续执行。"

缺点也很明显:goto 语句因为其"无结构"的特性,早已被现代编程范式所抛弃。著名计算机科学家 Dijkstra 在 1968 年发表了那篇著名的《Go To Statement Considered Harmful》,从此 goto 就背上了"有害"的标签。

但在某些极端的性能敏感场景(如中断处理程序),goto 依然有其存在的价值。

5.2 宏定义的艺术:for(EVER)

在一些项目中,你可能会看到这样充满趣味性的写法:

#define EVER ;;for (EVER) {    // 永远执行}

或者更加"文艺"的版本:

#define forever for(;;)forever {    // 永远执行}

这种写法通过宏定义将 for(;;) 封装成了更具可读性的形式。for(EVER) 读起来就像英文"forever"(永远),增加了代码的趣味性。

当然,这种"小聪明"在正式的工业项目中不太推荐使用——它增加了代码的理解成本,而且宏定义可能带来意想不到的副作用。

5.3 其他语言的选择

值得一提的是,不同编程语言对无限循环的处理也各有特色:

# Pythonwhile True:    pass# Rust - 专门的关键字!loop {    // 无限循环}# Gofor {    // 省略条件的 for 循环}

Rust 语言甚至专门设计了 loop 关键字来表示无限循环,这从语言层面就避免了 while(true) 和 for(;;) 的争论。

Go 语言的 for {} 则与 C 语言的 for(;;) 异曲同工——都是通过省略条件来表达"无限循环"的语义。


六、总结 —— 你的代码该如何选择?

经过以上分析,让我们来做一个简单的总结:

6.1 核心结论

对比维度
while(1)for(;;)
历史汇编效率
可能多几条指令
直接无条件跳转
现代编译器
已被优化,效果相同
效果相同
静态分析工具
可能触发警告
无警告
MISRA C 规范
不推荐
推荐
语义表达
"当 1 为真时循环"
"无条件循环"
行业认可度
应用层常见
底层/内核首选

6.2 我的建议

在现代开发中,如果你:

  • • 正在开发嵌入式系统、操作系统内核、驱动程序等底层软件
  • • 需要遵循 MISRA C、CERT C 等工业编码规范
  • • 希望代码能通过严格的静态分析而不产生警告
  • • 想让自己的代码看起来更加专业和规范

那么请毫不犹豫地选择 for(;;)

如果你只是在写一些应用层代码、脚本、原型验证,或者团队已经有了统一的代码风格规范,那么 while(1) 也完全没有问题——毕竟,在现代编译器的优化下,两者的性能已经没有差别。

重要的是保持一致性。 在一个项目中,最好只使用一种写法,避免风格混乱。

6.3 最后的思考

这个看似微不足道的"分号之争",实际上折射出了软件工程中的一个重要理念:

好的代码不仅要能运行,还要能清晰地表达意图,能经受住规范的检验,能传承数十年而不过时。

for(;;) 之所以能在 Linux 内核这样的顶级项目中屹立不倒,不是因为它有多么神奇的性能优势,而是因为它代表了一种对代码质量的极致追求

下次当你写无限循环的时候,不妨试试 for(;;)——也许,这就是你向"内核级程序员"迈进的第一步。


你第一次看到 for(;;) 时是不是也觉得它长得很奇怪?

欢迎在评论区分享你被代码风格"震撼"的瞬间!


【往期推荐】

嵌入式软件模块解耦进阶:构建高内聚、低耦合的系统架构

给你的设备做一套"砖不死"的 OTA 升级方案

适配器模式:老板突然要换芯片?教你用 C 语言构建"防弹"级 HAL 层

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-09 10:41:08 HTTP/2.0 GET : https://f.mffb.com.cn/a/459435.html
  2. 运行时间 : 0.248576s [ 吞吐率:4.02req/s ] 内存消耗:4,875.88kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=d13bf8c1e9328d77cf8a0d47b69693a8
  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.000849s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001257s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001411s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002779s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001263s ]
  6. SELECT * FROM `set` [ RunTime:0.002125s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001538s ]
  8. SELECT * FROM `article` WHERE `id` = 459435 LIMIT 1 [ RunTime:0.016340s ]
  9. UPDATE `article` SET `lasttime` = 1770604869 WHERE `id` = 459435 [ RunTime:0.014242s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.004577s ]
  11. SELECT * FROM `article` WHERE `id` < 459435 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.004890s ]
  12. SELECT * FROM `article` WHERE `id` > 459435 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.008510s ]
  13. SELECT * FROM `article` WHERE `id` < 459435 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.011289s ]
  14. SELECT * FROM `article` WHERE `id` < 459435 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002972s ]
  15. SELECT * FROM `article` WHERE `id` < 459435 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.033955s ]
0.251725s