当前位置:首页>Linux>用生活中的例子给你解释Linux内核中的常用锁!小学生都能看懂!

用生活中的例子给你解释Linux内核中的常用锁!小学生都能看懂!

  • 2026-01-23 06:04:06
用生活中的例子给你解释Linux内核中的常用锁!小学生都能看懂!

击左上方蓝色“一口Linux”,选择“设为星标

第一时间看干货文章
【干货】嵌入式驱动工程师学习路线
【干货】Linux嵌入式知识点-思维导图-免费获取
【就业】一个可以写到简历的基于Linux物联网综合项目
【就业】简历模版

Linux内核需要处理并发任务,并发执行但愿对共享资源的访问很容易导致竞态。

为保证对共享资源的互斥访问,Linux内核中提供了互斥的机制:中断屏蔽、原子操作、互斥锁、信号量、自旋锁、completion

本文结合一些生活中实例,给大家讲解,让大家对这些锁的使用有个更直观的认识,实际工作中根据应用场景选择合适的机制。

1、中断屏蔽

1)原理

Linux 中断屏蔽的核心是通过关闭 CPU 中断响应,保证临界区代码原子执行。

核心概念

中断屏蔽是让 CPU 暂时不响应指定类型中断的机制,仅作用于当前 CPU 核心,不影响其他核心或全局中断控制器配置。

实现方式

  • 内核态接口: 通过local_irq_disable()关闭当前 CPU 所有中断,local_irq_enable()恢复,成对使用。
  • 带保存状态: local_irq_save(flags)关闭中断并保存当前状态,local_irq_restore(flags)恢复原状态,适合嵌套场景。
  • 部分屏蔽: local_irq_mask(irq)屏蔽指定中断号,local_irq_unmask(irq)解除,精准控制单个中断。

关键注意事项

屏蔽期间禁止睡眠或调度,否则会导致系统卡顿。 临界区代码必须极简,避免长时间阻塞中断响应。 用户态无法直接屏蔽中断,需通过内核模块或系统调用间接实现。

2)举例

Linux 中断屏蔽的核心是 “暂时隔绝外界干扰,专注完成关键事”,生活中对应的场景都是 “做事时不被打断,直到核心流程结束”。、

  1. 开玩王者荣耀 场景: 玩王者的时候为了不被电话打扰,可以关闭移动信号,只使用wifi联网。 对应中断屏蔽:手机(临界区代码)必须完整执行,电话呼入(中断请求)会被暂时 “屏蔽”,避免操作被打断影响上分。

  2. 考试时关闭手机 / 屏蔽外界干扰 场景: 期末考试时,你会把手机关机或调至飞行模式,拒绝聊天、电话等打扰,直到写完试卷交卷。 对应中断屏蔽:考试(临界区代码)必须完整执行,手机消息、他人呼唤(中断请求)会被暂时 “屏蔽”,避免思路被打断导致错误。

  3. 开车过路口时专注操作 场景: 开车经过繁忙十字路口,你会集中注意力观察红绿灯、行人、其他车辆,暂时不接电话、不聊微信,直到安全通过路口。 对应中断屏蔽:“过路口” 是关键操作(避免交通事故),电话、消息(中断)会被暂时忽略,确保操作不被干扰。

  4. 医生做手术时谢绝无关打扰 场景: 外科医生做手术时,手术室会禁止无关人员进入、不接非紧急电话,只有手术团队的必要沟通,直到手术完成。 对应中断屏蔽:手术(核心临界区)是 “不可中断” 的关键流程,无关干扰(普通中断)会被屏蔽,仅保留紧急情况(如设备故障等不可屏蔽中断)。

  5. 重要会议开启 “免打扰模式” 场景:公司开战略决策会,参会者会把手机调免打扰,不处理邮件、消息,专注讨论决策,直到会议结束。

对应中断屏蔽:会议讨论(临界区代码)需要连贯思路,无关消息(中断)被暂时屏蔽,避免决策过程被打断。

  1. 厨师颠勺烹饪关键步骤 场景: 厨师炒一道菜的 “颠勺调味” 环节,会专注控制火候、翻炒节奏、加盐调味,不会中途去切菜、接订单,直到菜品出锅。 对应中断屏蔽:“颠勺调味” 是决定菜品口感的核心步骤(临界区),其他杂事(中断)会被暂时搁置,避免步骤错乱。

2、原子操作

1)原理

Linux 原子操作是不可被中断的最小执行单元,核心作用是保证多线程 / 多 CPU 核心并发访问共享资源时的安全性,避免竞态条件(Race Condition)操作要么完整执行,要么完全不执行,不会被调度或中断打断。

  • 原子性: 操作的 “不可分割性”,CPU 执行时不会被其他任务抢占。
  • 适用场景: 共享资源的计数(如引用计数、统计计数)、标志位修改、简单同步(替代轻量级互斥锁)。
  • 底层实现: 依赖 CPU 硬件指令(如 x86 的 lock 前缀、ARM 的 ldrex/strex 指令),无需内核调度介入,效率远高于锁机制。

2) 举例

  1. 用钥匙开门 / 锁门 场景: 你用钥匙拧门锁,从 “解锁” 到 “推门进入”(或 “锁死” 到 “拔钥匙”)的整个过程,不能被拆分。 对应原子性:要么完整完成 “解锁 + 进门”(操作成功),要么没拧开就放弃(操作失败),不会出现 “门半开半关”(操作被打断)的中间状态。

  2. 扫码支付扣款 场景: 你用手机扫码付奶茶钱,“从你的账户扣 15 元” 和 “商家账户到账 15 元” 是绑定的原子操作。 对应原子性:不会出现 “你扣了钱但商家没到账”(操作中断),也不会 “商家到账但你没扣钱”(重复执行),系统会保证两步要么一起完成,要么都不执行。

  3. 抢最后一张火车票 场景: 12306 上只剩 1 张票,你和另一个人同时点击 “购票”,系统只会让一个人成功。 对应原子性:“查询余票(1 张)→ 锁定车票 → 扣钱 → 出票” 的流程是原子的,不会被另一个人的操作打断。

  4. 按电梯按钮 场景: 你按电梯 “上行” 键,按钮要么亮(表示电梯收到请求),要么不亮(没按到),不会出现 “半亮半不亮” 的状态。

  5. 银行转账(完整原子流程) 场景: 从 A 账户转 1000 元到 B 账户,核心流程是 “A 减 1000 → 验证 A 余额是否足够 → B 加 1000”。

3、互斥锁

原理

Linux 互斥锁(Mutex,全称 Mutual Exclusion)是解决多线程 / 多进程并发访问共享资源的核心同步机制,核心作用是 “排他性占用”—— 确保同一时间只有一个线程 / 进程能进入临界区(操作共享资源的代码段),其他竞争者会阻塞等待,直到锁被释放,从而避免竞态条件和数据不一致。

举例

Linux 互斥锁的核心是「排他性占用 + 阻塞等待」—— 同一时间只有一个 “使用者” 能进入临界区(共享资源),其他人必须排队等前者用完再上,完全对应生活中 “一人使用、众人排队” 的场景。以下是最直观的类比,每个场景都能对应互斥锁的核心特性:

  1. 公共电话亭: 电话亭(临界区)一次只能进 1 人,其他人排队(阻塞),用完出来(解锁)后下一人进入 —— 对应 “排他性访问”。

  2. 卫生间门锁: 有人使用时锁门(加锁),其他人在外等待(阻塞),使用完毕开锁(解锁)—— 对应 “解锁者必须是加锁者”(谁锁的谁开)。

  3. 会议室预约系统: 会议室(共享资源)通过预约锁(互斥锁)分配,同一时间段只有一个团队使用,其他团队需等预约结束(锁释放)—— 对应 “长时间临界区”(会议可能持续 1 小时,睡眠等待比自旋更高效)。

4、信号量

原理

Linux 信号量是用于多线程 / 多进程同步与互斥的核心机制,本质是一个 “带计数的同步工具”—— 通过一个整数计数器控制对共享资源的访问权限,核心作用是:

  • 互斥: 确保同一时间只有一个线程 / 进程访问资源(计数器 = 1,也称 “二值信号量”);
  • 同步: 控制多个线程 / 进程的执行顺序(计数器 > 1,也称 “计数信号量”),比如限制同时访问资源的最大数量。

可以类比生活中的 “电影院入场券”:影院某场次有 100 个座位(计数器 = 100),每张票对应一个座位(共享资源),观众凭票入场(获取信号量),离场时回收票(释放信号量);票卖完(计数器 = 0)后,后续观众需排队等待(阻塞),直到有人离场(计数器增加)。

举例

Linux 信号量的核心是「计数控制 + 阻塞等待」—— 用一个 “计数器” 限制同时使用资源的最大数量,没轮到的人排队等待,完全对应生活中 “限量使用、先到先得、排队等候” 的场景,分 “二值信号量(互斥)” 和 “计数信号量(同步 / 限流)” 两类类比,更易理解:

  1. 电影院场次观影(最经典限流场景) 场景: 某场电影有 100 个座位(计数器 N=100),每张电影票对应一个 “使用名额”。 观众凭票入场(P 操作:计数器 - 1),满座后(计数器 = 0),后续观众需在大厅排队(阻塞等待); 有人离场(V 操作:计数器 + 1),才能放行下一位观众入场。

  2. 餐厅排队叫号系统(同步 + 限流) 场景: 餐厅有 5 张餐桌(计数器 N=5),顾客到店取号(获取信号量资格),有空桌时(计数器 > 0)叫号入座(P 操作:计数器 - 1); 用餐结束离席(V 操作:计数器 + 1),下一位顾客被叫号。若 5 张桌全满,后续顾客需在等候区排队(阻塞)。

  3. 共享单车停车点(共享资源 + 名额回收) 场景:小区门口有 8 个共享单车停车桩(计数器 N=8),你骑车回来时,若有空桩(计数器 > 0)可锁车归还(V 操作:计数器 + 1);若全满(计数器 = 0),需去下一个停车点(或排队等待他人取车)。其他人取车时(P 操作:计数器 - 1),空桩名额释放。

  4. 高速公路收费站(多通道限流) 场景: 高速公路有 3 个收费通道(计数器 N=3),车辆到达后选择空闲通道(计数器 > 0)通过(P 操作:计数器 - 1); 缴费完成后离开(V 操作:计数器 + 1)。 若 3 个通道全忙(计数器 = 0),后续车辆需在入口排队(阻塞),直到某通道空闲。

5、自旋锁

原理

在Linux内核中,自旋锁(spinlock)是一种用于保护共享数据的简单而有效的同步机制。自旋锁允许多个处理器核心在尝试访问共享资源时,如果一个核心持有锁,其他核心会“自旋”(忙等),直到锁被释放。这种方式避免了上下文切换的开销,适用于锁持有时间很短的场景。

  • 自旋锁的工作原理 自旋锁通常基于原子操作实现,确保在多处理器环境中操作的原子性。在Linux内核中,自旋锁的实现依赖于硬件提供的原子操作指令,如x86架构中的test-and-set指令或者atomic操作。

  • 注意事项

  • 1‌) 避免死锁‌: 确保在持有自旋锁时不会导致死锁,例如,不要在已经持有某个锁的情况下请求另一个锁。

  • ‌2) 短时间持有‌: 尽量保持自旋锁的持有时间短,因为长时间的自旋会导致CPU资源浪费。

  • ‌3) 中断上下文‌: 在使用spin_lock_irq和spin_unlock_irq时,要确保在适当的上下文中使用,避免在可睡眠函数中使用这些函数。

通过合理使用自旋锁,可以有效地管理多核CPU环境中的数据访问冲突,提高系统的并发性能。

举例

  1. 洗手间门外 “秒等”(最经典类比) 场景: 你急着用洗手间,走到门口发现门是关的(锁被占用),但能听到里面的人正在冲水、整理(明显是 “快结束了”,临界区极短)。 你不会下楼找其他洗手间(不会休眠 / 切换),而是在门口原地等几秒(自旋),对方一开门你就立刻进去(抢到锁)。

  2. 电梯口 “紧盯电梯”(短等待 + 立即响应) 场景: 你按下电梯按钮,看到电梯显示 “1 楼→2 楼”(即将到达,临界区极短), 你不会去楼梯间等(不切换),而是在电梯口原地盯着指示灯(自旋检查锁状态),电梯门一开就立刻进去(抢占锁)。

  3. 便利店排队结账(1 人排队 + 短等待) 场景: 你去便利店买一瓶水,结账时前面只有 1 个人,且对方已经在扫最后一件商品(临界区极短)。 你不会转身去其他便利店(不切换),而是在原地等着(自旋),对方一结完账你就立刻上前(抢到锁)。

  4. 停车场 “绕圈等空位”(自旋 + 不放弃资源) 场景: 你开车进停车场,看到有 1 辆车正在驶出车位(临界区极短), 你不会开车离开(不切换),而是在车位附近缓慢绕圈(自旋),对方一驶离你就立刻停车入位(抢占锁)。

  5. 办公室 “等打印机出纸”(短临界区 + 自旋检查) 场景: 你发送打印任务后,看到打印机正在打印最后 1 页(临界区极短), 你不会先去开会(不休眠),而是在打印机旁等(自旋),纸张一出来就立刻取走(抢到锁)。

6、completion

原理

在Linux内核中,completion是一种同步机制,它允许一个或多个进程等待一个或多个事件的发生。 completion通常用于确保某个操作完成之前,其他进程不会继续执行。 这在多线程编程中非常有用,特别是在需要确保数据结构在并发访问时保持一致时。

举例

Linux completion 的核心是「等待特定事件完成 + 完成后唤醒」—— 一个或多个线程等待某个 “目标事件” 发生,事件完成后会主动通知所有等待者,生活中对应的场景都是「等人 / 等事做完,对方完成后告知,再继续自己的事」,核心是 “等待通知” 而非 “争夺资源”。

  1. 朋友约饭 “等对方到齐”(最经典类比) 场景: 你和 3 个朋友约好一起吃火锅,约定 “所有人到齐后再点菜”。你先到了火锅店(等待线程调用 wait_for_completion),就坐着刷手机等待(阻塞休眠); 其他朋友陆续到达,最后一个朋友到店时(完成线程调用 complete),大喊 “人齐了!”(唤醒所有等待者),你们立刻开始点菜(等待线程恢复执行)。

  2. 快递到站 “等取件通知”(单等待者场景) 场景: 你在网上买了一本书,选择 “驿站自提”。下单后你正常工作、学习(等待线程休眠),不会每隔 5 分钟就去驿站问(不自旋); 快递员把书送到驿站并扫描入库(完成线程执行 complete),驿站通过短信通知你 “快递已到”(唤醒等待者),你收到通知后才去驿站取件(等待线程执行后续操作)。

  3. 团队项目 “等关键模块开发完成”(多等待者依赖同一事件) 场景: 公司做一个 APP,你的团队负责 “支付模块”,需要等 “用户登录模块” 开发完成(目标事件)才能对接。你和同事们先做支付模块的独立开发(等待线程阻塞休眠),不浪费时间去反复询问登录模块进度(不自旋); 登录模块开发完成后,负责人在工作群通知 “登录模块 OK 了”(complete_all 唤醒所有等待者),你们立刻开始对接开发(等待线程恢复)。

  4. 餐厅 “等菜上桌”(等待特定结果完成) 场景: 你在餐厅点了一份红烧肉,下单后你坐在座位上玩手机、聊天(等待线程休眠),不会跑到后厨门口盯着厨师做菜(不自旋); 厨师做好红烧肉后,服务员端上桌并告知 “您的菜好了”(完成线程执行 complete),你收到 “通知” 后开始吃饭(等待线程执行后续操作)。

  5. 考试 “等监考老师发卷”(统一触发事件) 场景: 期末考试时,所有考生(多个等待线程)坐在座位上等待,不会提前翻试卷(阻塞休眠); 监考老师把试卷分发到每个座位后(完成线程执行 complete_all),宣布 “可以开始答题了”(唤醒所有等待者),所有考生同时开始考试(等待线程恢复执行)。

end

一口Linux 

关注,回复【1024】海量Linux资料赠送

精彩文章合集

文章推荐

【专辑】ARM
【专辑】粉丝问答
【专辑】所有原创
专辑linux入门
专辑计算机网络
专辑Linux驱动
【干货】嵌入式驱动工程师学习路线
【干货】Linux嵌入式所有知识点-思维导图

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 06:06:02 HTTP/2.0 GET : https://f.mffb.com.cn/a/466191.html
  2. 运行时间 : 0.287188s [ 吞吐率:3.48req/s ] 内存消耗:4,740.09kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=84b11d066ebb7abf4a2b117ae4e6236d
  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.000822s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001320s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000809s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000488s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001033s ]
  6. SELECT * FROM `set` [ RunTime:0.001934s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001556s ]
  8. SELECT * FROM `article` WHERE `id` = 466191 LIMIT 1 [ RunTime:0.005601s ]
  9. UPDATE `article` SET `lasttime` = 1770501962 WHERE `id` = 466191 [ RunTime:0.004591s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.006527s ]
  11. SELECT * FROM `article` WHERE `id` < 466191 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.004704s ]
  12. SELECT * FROM `article` WHERE `id` > 466191 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.008437s ]
  13. SELECT * FROM `article` WHERE `id` < 466191 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.035118s ]
  14. SELECT * FROM `article` WHERE `id` < 466191 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.034631s ]
  15. SELECT * FROM `article` WHERE `id` < 466191 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.042504s ]
0.290925s