当前位置:首页>Linux>Linux 信号与 timerfd 定时器:从入门到生产级实战

Linux 信号与 timerfd 定时器:从入门到生产级实战

  • 2026-08-18 23:11:21
Linux 信号与 timerfd 定时器:从入门到生产级实战
Hello,大家好,我是程序媛MM。

本文约3500,今天继续根据《一份靠谱的Linux终端产品应用层软件架构学习计划》这篇帖子中的计划,来梳理Linux 信号与 timerfd 定时器相关的知识体系

关注公众号, 即可获得与Linux相关的电子书籍以及常用开发工具,文末有文档清单。


在 Linux 系统编程、高性能后端服务、嵌入式实时系统中,信号(Signal) 是异步事件通知的基石,而 timerfd 则是 Linux 独有的“文件描述符化”定时器方案。二者常用于进程间通知、超时控制、优雅退出及周期性任务调度。

本文将从 原理机制 → API 演进 → 屏蔽控制 → timerfd 实战 → 生产级架构,系统梳理这套知识体系。尤其针对开发中容易踩的坑(如信号中断、可重入性、定时器堆积)做了专项说明,适合系统学习面试复盘


一 Linux 信号核心基础

1.1 信号的本质

信号是 Linux 内核提供的异步软中断机制。当事件发生(如非法内存访问、键盘中断、定时器超时),内核或其它进程向目标进程发送信号,进程在收到信号后会暂停当前执行流,转而执行预设的信号处理函数。

🧠 通俗理解:信号是系统发给进程的“紧急通知”,例如“立即终止”、“暂停运行”、“你访问了非法地址”。

1.2 信号核心特性

特性
说明
异步性
信号到达时间不可预知,与进程当前代码执行顺序无关
抢占性
信号处理函数会抢占进程主流程,处理完成后恢复原上下文
不可靠性(传统信号)
早期非实时信号(1~31)不支持排队,可能丢失或重复触发
优先级
实时信号(32~64)优于普通信号,且支持排队

1.3 常用信号分类(开发核心清单)

信号名
信号值
触发场景
默认行为
是否可捕获/屏蔽
SIGINT
2
终端 Ctrl+C
终止进程
✅ 可捕获
SIGQUIT
3
终端 Ctrl+\
终止 + 生成 core dump
✅ 可捕获
SIGKILL
9
kill -9
 强制杀死
强制终止
❌ 不可捕获、不可屏蔽
SIGSEGV
11
段错误(非法内存访问)
终止 + core dump
✅ 可捕获(但捕获后无法恢复)
SIGALRM
14
alarm()
 定时器超时
终止进程
✅ 可捕获
SIGTERM
15
kill
 默认发送
终止进程
✅ 可捕获(优雅退出首选
SIGCHLD
17
子进程状态改变
忽略
✅ 可捕获(用于回收子进程)

⚠️ 特别注意SIGKILL 和 SIGSTOP 是内核保留的“终极武器”,任何程序都无法捕获或屏蔽。


二 信号处理 API:signal vs sigaction

2.1 signal() —— 老旧且不推荐

#include<signal.h>typedefvoid(*sighandler_t)(int);sighandler_tsignal(int signum, sighandler_t handler);

参数说明:

  • handler 可取值:
    • 自定义函数地址 → 执行用户逻辑
    • SIG_IGN → 忽略该信号
    • SIG_DFL → 恢复系统默认行为

❌ 核心缺陷(生产环境不可用):

缺陷
说明
不可靠
触发后系统自动将处理函数重置为 SIG_DFL,需手动重新注册,存在竞态窗口
不支持屏蔽
无法指定在信号处理期间屏蔽其它信号
信息缺失
回调仅能接收信号编号,无法获取发送者 PID、错误地址等附加信息
非线程安全
多线程环境下行为未明确定义

✅ 适用场景:仅限教学演示、临时测试脚本,正式项目禁止使用


2.2 sigaction() —— 唯一推荐的生产级 API

sigaction() 是 POSIX 标准中解决 signal() 所有缺陷的替代方案,所有生产项目必须使用此接口。

#include<signal.h>intsigaction(int signum, const struct sigaction *act, struct sigaction *oldact);

核心结构体:

structsigaction {void     (*sa_handler)(int);           // 普通处理函数void     (*sa_sigaction)(intsiginfo_t *, void *); // 扩展处理函数(实时信号)sigset_t   sa_mask;                    // 处理期间临时屏蔽的信号集int        sa_flags;                   // 行为控制标志位};

关键 sa_flags 配置:

标志
作用
SA_RESTART
信号处理后自动重启被中断的系统调用(如 read/write/epoll_wait
SA_SIGINFO
启用扩展回调 sa_sigaction,可获取信号详细信息
SA_NODEFER
处理当前信号时,不自动屏蔽当前信号本身(允许嵌套,慎用)

✅ 核心优势:

  • 可靠性:注册后永久生效,不会自动重置
  • 精细屏蔽:通过 sa_mask 灵活控制信号处理期间的屏蔽策略
  • 丰富信息:结合 SA_SIGINFO 可获取发送进程 PID、UID、错误地址等
  • 线程安全:多线程环境下行为明确

2.3 signal vs sigaction 终极对比

维度
signal()sigaction()
可靠性
❌ 触发后重置为默认
✅ 永久生效
信号屏蔽
❌ 不支持
✅ 支持 sa_mask
实时信号
❌ 不支持
✅ 完整支持
系统调用重启
❌ 不支持
✅ SA_RESTART 可选
扩展信息
❌ 仅信号编号
✅ siginfo_t 包含 PID/UID/地址
生产推荐
❌ 禁止
✅ 强制推荐

三 信号屏蔽机制

信号屏蔽用于临时阻塞信号传递,保护关键代码段(如临界区、事务操作)不被异步信号打断,确保数据一致性。

3.1 核心概念

  • 信号屏蔽字(sigset_t:位图结构,每位代表一个信号。1 = 屏蔽,0 = 开放。
  • 未决信号集:被屏蔽的信号到达后不会立即处理,而是进入“未决”队列,待解除屏蔽后统一递送。
  • 不可屏蔽信号SIGKILLSIGSTOP 永久不可屏蔽。

3.2 信号集操作 API

#include<signal.h>intsigemptyset(sigset_t *set);        // 全部清 0intsigfillset(sigset_t *set);         // 全部置 1intsigaddset(sigset_t *setint sig)// 添加某个信号intsigdelset(sigset_t *setint sig)// 删除某个信号intsigismember(constsigset_t *setint sig)// 测试是否在集合中

3.3 进程级屏蔽控制:sigprocmask()

intsigprocmask(int how, constsigset_t *setsigset_t *oldset);
how
 参数
含义
SIG_BLOCK
将 set 中的信号追加到当前屏蔽字
SIG_UNBLOCK
从当前屏蔽字中移除set 中的信号
SIG_SETMASK
直接用 set覆盖当前屏蔽字

3.4 两种屏蔽场景的本质区别(✅ 重点)

屏蔽方式
作用范围
生效周期
典型场景
sigaction.sa_mask仅当前信号处理函数
处理函数执行期间自动生效,返回后恢复
防止信号处理函数被其它信号嵌套打断
sigprocmask()整个进程
全局生效,直至主动解除
保护关键业务临界区(如数据库写入、共享内存更新)

3.5 典型使用模式(临界区保护)

sigset_t new_mask, old_mask;sigemptyset(&new_mask);sigaddset(&new_mask, SIGINT);sigaddset(&new_mask, SIGTERM);// 进入临界区前屏蔽关键信号sigprocmask(SIG_BLOCK, &new_mask, &old_mask);// === 执行不可打断的核心操作 ===update_shared_data();// 退出临界区后恢复原屏蔽字sigprocmask(SIG_SETMASK, &old_mask, NULL);

四 timerfd —— 新时代的“IO 化定时器”

传统的 alarm() + SIGALRM 方案存在精度低、无法循环、中断系统调用、无法与 epoll 协同等问题。而 timerfd(Linux 2.6.25 引入)将定时器事件抽象为文件描述符的可读事件,完美融入 IO 多路复用体系。

4.1 核心优势

优势
说明
✅ 无信号干扰
不依赖软中断,不会打断系统调用,不影响业务逻辑
✅ 天然适配 epoll/select
作为 fd 直接加入事件循环
✅ 高精度
支持纳秒级定时
✅ 灵活触发模式
支持单次、循环、动态重置
✅ 解决超时堆积
读取超时次数即可知堆积情况,避免惊群

4.2 核心 API

1. timerfd_create() —— 创建定时器

#include<sys/timerfd.h>inttimerfd_create(int clockid, int flags);
  • clockid:推荐 CLOCK_MONOTONIC(单调时钟,不受系统时间调整影响)
  • flags:常用 TFD_NONBLOCK(非阻塞) | TFD_CLOEXEC(exec 时自动关闭)

2. timerfd_settime() —— 启动/修改定时参数

inttimerfd_settime(int fd, int flags,const struct itimerspec *new_value,                    struct itimerspec *old_value);

结构体定义:

structitimerspec {structtimespecit_value;// 首次超时时间structtimespecit_interval;// 后续循环周期(0 = 单次)};
配置组合
效果
it_value = 0关闭
定时器
it_interval = 0单次触发
(类似 alarm
it_interval > 0循环触发
,按固定周期持续产生事件

3. 读取超时次数(⚠️ 必须执行)

定时器超时后,timerfd 变为可读,读取 8 字节 uint64_t 获得累计超时次数。

uint64_t expirations;ssize_t s = read(timer_fd, &expirations, sizeof(uint64_t));if (s == sizeof(uint64_t)) {// 处理 expirations 次超时(通常循环一次即可)}

⚠️ 关键踩坑:若 read() 返回 EAGAIN(非阻塞模式)或未读取,timerfd 会一直处于可读状态,导致 epoll 死循环触发事件

4.3 timerfd vs 信号定时器终极对比

对比维度
alarm
 + SIGALRM
timerfd
实现机制
信号软中断
文件描述符 IO 事件
多路复用
❌ 无法与 epoll 协同
✅ 原生支持
系统调用中断
❌ 易打断 read/write,需 SA_RESTART
✅ 无中断,安全可靠
精度
秒级
纳秒级
循环定时
❌ 需手动重置,存在竞态
✅ 原生支持,自动循环
超时堆积
信号可能丢失
✅ 累计计数,不丢事件
生产推荐
❌ 老旧方案,不推荐
✅ 现代 Linux 服务首选

五 生产级事件驱动架构

5.1 标准架构模型

当前主流的 Linux 高性能服务(如 Nginx、Redis 事件模型)均遵循:

epoll 管理所有 IO 事件 + timerfd 负责定时任务 + sigaction 处理退出信号 + sigprocmask 保护临界区

典型应用场景:

组件
用途
sigaction
 + SIGINT/SIGTERM
实现优雅退出(释放内存、关闭连接、落盘数据)
sigprocmask
保护核心事务代码(如账户扣款、状态机更新)
timerfd
心跳检测、会话超时、定期健康检查、延迟任务调度
epoll
统一调度网络 IO、定时器、信号 fd(通过 signalfd

5.2 核心踩坑清单(⭐ 重点)

  1. 禁止在信号处理函数中调用非可重入函数

    • ❌ 禁止:malloc / free / printf / std::cout / 锁操作(pthread_mutex_lock
    • ✅ 允许:write() / read() / socket 发送 / 设置全局 volatile sig_atomic_t 标志
    • 🔥 后果:可能导致死锁、堆内存损坏、程序异常挂起
  2. 永远使用 sigaction() 代替 signal()

    • 避免信号丢失、自动重置带来的不可预知行为
  3. 关键业务逻辑必须加信号屏蔽

    • 保护共享资源访问,防止异步信号在临界区中段导致数据不一致
  4. 定时任务优先选用 timerfd

    • 抛弃 alarm + 信号的组合,避免系统调用被中断的风险
  5. 必须读取 timerfd 的超时计数值

    • 否则 fd 会持续可读,导致 epoll_wait 忙轮询,CPU 飙高

六 知识体系全景图

本文核心内容可归纳为 三层能力模型

层级
内容
关键动作
基础层
信号机制原理(异步软中断、常用信号分类)
掌握 SIGTERM vs SIGKILL 区别
实操层
信号处理与屏蔽
sigaction
 注册 + sigprocmask 保护临界区 + sa_mask 防嵌套
进阶层
timerfd 定时器 + epoll 事件驱动
构造高并发、无阻塞、可优雅退出的生产级服务

这套体系是 Linux 系统编程 / 嵌入式 Linux / 后端中间件开发 的核心基本功,吃透它,我们就能稳健解决优雅退出、定时调度、异步事件处理、高并发稳定性等关键问题。

往期文章(欢迎订阅技术分享栏目全部文章):

【从零开始撸内核驱动源码】:以ttyserial(串口驱动)为例,串联字符设备驱动基础知识点的学习计划
Linux内核源码顶层 Makefile分析并单独编译调试内核自带的驱动
【从零开始撸内核驱动源码】:ttynull驱动
Linux内核驱动安装失败问题调试及解决方法
Linux内核驱动源码走读之编译内核及外部驱动实操指南
谢谢你看到这里

嵌入式Linux设备内部跨模块通信方案对比与统一消息架构设计

嵌入式Linux设备内部跨模块通信方案对比与统一消息架构设计

分享读书心得、工作经验,自我成长和生活方式。

希望我的文字能对你有所帮助

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 21:02:02 HTTP/2.0 GET : https://f.mffb.com.cn/a/506983.html
  2. 运行时间 : 0.328186s [ 吞吐率:3.05req/s ] 内存消耗:4,480.33kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=41ec2ee49e0d8e9bb8957173cd4d4a2e
  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.001024s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001406s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001696s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.015713s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001562s ]
  6. SELECT * FROM `set` [ RunTime:0.001974s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001721s ]
  8. SELECT * FROM `article` WHERE `id` = 506983 LIMIT 1 [ RunTime:0.005926s ]
  9. UPDATE `article` SET `lasttime` = 1787317322 WHERE `id` = 506983 [ RunTime:0.003194s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000650s ]
  11. SELECT * FROM `article` WHERE `id` < 506983 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.032432s ]
  12. SELECT * FROM `article` WHERE `id` > 506983 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.010048s ]
  13. SELECT * FROM `article` WHERE `id` < 506983 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.065448s ]
  14. SELECT * FROM `article` WHERE `id` < 506983 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001773s ]
  15. SELECT * FROM `article` WHERE `id` < 506983 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004611s ]
0.331840s