当前位置:首页>Linux>6张图搞懂 Linux 进程调度系统

6张图搞懂 Linux 进程调度系统

  • 2026-06-28 02:26:01
6张图搞懂 Linux 进程调度系统
大家好,这里是物联网心球。
    本期文章我们来深入学习 Linux 进程调度系统。
1.进程调度是什么?

    进程调度是内核按照既定规则,从就绪队列里挑选进程、分配 CPU 使用权,并完成进程切换的整套机制。

    进程调度的目标:

  • 公平性:让每个进程都能获得合理的 CPU 时间,避免某个进程独占资源。

  • 效率:最大化 CPU 利用率,减少空闲等待。

  • 响应性:让交互式程序(如浏览器、终端)能快速响应用户操作。

  • 实时性:保证关键任务(如工业控制、音视频处理)在严格时限内完成。

2.进程调度系统

    如图1所示,进程调度系统核心概念包括:调度策略、调度类进程、优先级、调度实体、CPU运行队列、调度时机。

图1    进程调度系统

3.调度策略

    调度策略是操作系统为进程分配 CPU 资源、决定执行顺序与切换规则所采用的算法和规则。

    调度策略分类:

  • SCHED_NORMAL(0):完全公平调度,Linux 默认调度策略,调度器始终选择 vruntime 最小的进程运行。

  • SCHED_FIFO(1):实时先进先出,无时间片,一旦获得 CPU 一直运行,除非被更高优先级实时任务抢占。

  • SCHED_RR(2):实时时间片轮询,与 SCHED_FIFO 唯一的区别是同优先级进程之间增加了时间片轮转。

  • SCHED_BATCH(3):批量处理调度,与SCHED_NORMAL区别是,进程唤醒后不会主动抢占当前正在运行的前台进程。 

  • SCHED_IDLE(5):空闲调度,优先级最低,仅系统无其他任务时才运行。

  • SCHED_DEADLINE(6): 截止期限调度,优先级最高,基于 EDF(最早截止时间优先) 算法,为任务设置运行周期、运行时长、截止时间,内核保证任务在截止时间前完成。

  • SCHED_EXT(7):可扩展调度器,通过 BPF 程序自定义调度逻辑(Linux 6.12+)。

4.调度类

    调度类(struct sched_class) 是 Linux 内核实现模块化调度的核心结构体,它将调度算法、选进程、入队、出队、抢占、切换等一系列调度行为封装成统一接口。

    不同类型的进程归属不同调度类,每个调度类对应一套独立调度逻辑,高优先级调度类的进程会无条件抢占低优先级调度类进程。struct sched_class 定义如下:

structsched_class {void (*enqueue_task) (......); /* 将进程加入CPU运行队列 */bool (*dequeue_task) (......); /* 将进程移出CPU运行队列 */void (*yield_task) (......); /* 主动让出CPU:sched_yield() 时调用 */structtask_struct *(*pick_task)(......); /* 从本调度类中选出一个最应该运行的进程 */structtask_struct *(*pick_next_task)(......); /* 选择下一个运行进程 */void (*put_prev_task)(......); /* 把上一个进程放回CPU运行队列 */void (*set_next_task)(......); /* 设置下一个进程为即将运行进程 */int  (*select_task_rq)(......); /* 为进程选择目标CPU */void (*set_cpus_allowed)(......); /* 设置CPU亲和性 */void (*update_curr)(......); /* 更新当前进程运行时间 */};

    Linux 常见调度类(按优先级从高到低)如下:

  • dl_sched_class(DEADLINE 硬实时调度类):优先级最高,用于工业控制、自动驾驶、低延时音视频,按截止时间调度。

  • rt_sched_class(实时调度类):用于实时任务,支持 SCHED_FIFO、SCHED_RR,高优先级可抢占所有普通进程。

  • fair_sched_class(完全公平调度类):Linux 默认调度类,管理普通进程(SCHED_NORMAL、SCHED_BATCH),保证 CPU 公平分配。

  • idle_sched_class(空闲调度类):优先级最低,只有 CPU 完全空闲时才运行,用于系统 idle 任务。

  • stop_sched_class(停止调度类):内核内部最高优先级,用于 CPU 热插拔、内核暂停,用户无法使用。

5.进程优先级

    进程优先级是内核决定哪个进程先使用 CPU的权重值,内核永远优先选择优先级更高的进程运行,进程 task_struct 结构定义了四个优先级字段:

structtask_struct {int             prio; /* 动态优先级 */int             static_prio; /* 静态优先级 */int             normal_prio; /* 理论标准优先级 */unsignedint      rt_priority; /* 实时优先级 */    ......};
  • prio:动态优先级(真实优先级),调度器通过 prio 选择下一个要运行的进程时,通常等于 normal_prio,但可以临时变化(不是固定死的)。范围:-1~139,数值越小,优先级越高。

  • static_prio:静态优先级,只给 CFS 普通进程使用,由 static_prio = 120 + nice 计算而来,范围:100~139。

  • normal_prio:normal_prio 是动态优先级 prio 的初始值。Linux 有优先级继承、优先级翻转等机制,这些机制会临时修改 prio,让进程优先级临时变高,normal_prio 是优先级临时调整后恢复的标准值。

  • rt_priority:实时优先级,只给实时进程使用(SCHED_FIFO/SCHED_RR),范围:1 ~ 99,数值越大优先级越高。

    我们通过一张图来直观了解一下这几个优先级,如图2所示。

    图2    进程优先级

    我们把进程优先级总结为一张表(见表1),方便查看:

表1    进程优先级

    在进程优先级中,有一个比较重要的概念nice值,nice 值是 Linux 系统里用于调整普通进程(完全公平调度)优先级的参数,取值范围 -20 ~ 19,默认值为 0。数值越小,进程抢占 CPU 的能力越强,优先级越高;数值越大则越谦让、优先级越低。

    它仅作用于普通进程,对实时进程、DEADLINE 调度进程无效,同时普通用户只能调高该值,root 用户可全权修改。

    静态优先级 static_prio 由 nice 直接计算:static_prio = 120 + nice。Linux 提供了查看和修改nice值的命令,如下:

# 显示进程的 PID、nice 值和命令ps -eo pid,ni,cmd# 查看特定进程ps -o pid,ni,cmd -p <PID># 启动新进程时指定 nice 值nice -n <nice值> 命令# 修改正在运行的进程的 nice 值,注意:普通用户只能调高 nice 值renice <新nice值> -p <PID>

    这些命令底层依赖 getpriority 和 setpriority 函数,getpriority 和 setpriority 函数(系统调用)用于获取和设置指定进程、进程组或用户的 nice 值。

#include<sys/resource.h>// 成功:返回目标进程的 nice 值(注意:nice值可能 -1);返回 -1,并设置 errnointgetpriority(int which, int who);// 成功:返回 0;失败:返回 -1,并设置 errno。 intsetpriority(int which, int who, int prio);

    参数说明:

  • which: 用于指定操作的目标类型:

    • PRIO_PROCESS:操作单个进程, who 填写目标进程的 PID。

    • PRIO_PGRP:操作进程组,who 填写目标进程组的 PGID。

    • PRIO_USER:操作指定用户所有进程,who 填写目标用户的 UID。

  • who:配合which使用,当 who 传入 0 时,表示操作当前的进程、进程组或用户。

  • prio: 指定新的 nice 值。

    getpriority 和 setpriority 函数的底层实现原理如图3所示。

图3    设置普通进程优先级

    用户程序修改nice值时,内核会通过 NICE_TO_PRIO(120 + nice)将 nice 值转换为静态优先级存储在 task_struct 结构 static_prio 字段。用户程序获取 nice 值时,会通过 PRIO_TO_NICE (static_prio - 120) 将 static_prio 静态优先级转换成 nice 值并返回给用户程序。

5.调度实体

    调度实体是可以被调度器调度的最小单位,调度对象(用户进程、用户线程、内核线程、cgroup调度组)通过调度实体加入 CPU 运行队列,调度实体中包含了进程调度相关的必要信息。

    Linux 按调度类划分三大调度实体:

  • CFS 调度实体(struct sched_entity):归属完全公平调度类,对应 SCHED_NORMAL、SCHED_BATCH 调度策略,用于系统普通进程与后台任务。

  • RT 调度实体( struct sched_rt_entity):归属实时调度类,对应 SCHED_FIFO、SCHED_RR 调度策略,用于低延迟实时任务。

  • DL 调度实体(struct sched_dl_entity):归属截止期限调度类,对应 SCHED_DEADLINE 调度策略,用于时延要求高的硬实时任务。

     task_struct 结构体内部,同时包含三类调度实体,之所以同时要包含调度实体,是进程需要通过这三个调度实体选择性加入 CPU 运行队列三大子队列:

structtask_struct {structsched_entityse;/* CFS 调度实体 */structsched_rt_entityrt;/* RT 实时调度实体 */structsched_dl_entitydl;/* DL 截止期限调度实体 */    ......};

6.CPU运行队列

    CPU 运行队列,内核用结构体 struct rq 表示,每一个 CPU 核心单独拥有一个独立运行队列(per-CPU 变量),是该 CPU 上所有就绪任务的统一管理容器。只有处于就绪、等待 CPU任务才会存放在对应 CPU 的运行队列中。

    CPU 运行队列包含三大子队列,优先级从高到低:

  • DL 截止期限队列(struct dl_rq):截止期限进程专用,红黑树结构,按 deadline 排序。

  • RT 实时队列(struct rt_rq):实时进程专用,优先级数组 + 双向链表结构,按动态优先级排序。

  • CFS 完全公平队列(struct cfs_rq):普通进程专用,红黑树结构,按 vruntime 虚拟运行时间,Linux 6.6+ 改用虚拟截止时间 vdeadline 排序。

7.调度时机

调度时机是内核决定是否进行进程/线程上下文切换的特定触发点或检查时刻。调度时机分为两大类:

  • 主动调度:进程主动放弃 CPU,直接调用 schedule(),无标志位延迟,立刻切换。

  • 被动调度:内核发现有更适合运行的任务,先打标记 TIF_NEED_RESCHED,不会立刻切换,仅走到安全检查点,才执行 schedule()。

    主动调度和被动调度对比见表2。

表2    主动调度和被动调度对比

7.1 sleep 主动调度

用户程序调用 sleep 系列函数(sleep、usleep、nanosleep等函数)后,进程会发生一次主动调用,如图4所示。

图4    sleep 主动调度
    用户程序调用sleep函数后,内核依次会调用:clock_nanosleep()->hrtimer_nanosleep()->do_nanosleep(),do_nanosleep 函数会将进程状态设置为 TASK_INTERRUPTIBLE(睡眠态),同时会启动一个高精度定时器由于超时后唤醒进程,最后会调用:schedule()->__schedule_loop()->__schedule()完成进程调度。__schedule函数会将当前进程从运行队列出队,然后从运行队列中挑选下一个最合适的进程运行,最后执行 CPU 上下文切换完成进程调度。
7.2 sched_yield 主动调度
    用户程序调用 sched_yield 函数后,进程同样会发生一次主动调度,和sleep 主动调度不同的是,sched_yield 主动调度并不会让进程休眠,具体情况如图5所示。
图5    sched_yield 主动调度
    用户程序调用 sched_yield 函数,内核会调用:do_sched_yield()->yield_task(),yield_task 函数内部会调用调度类成员函数sched_class->yield_task(),如完全公平调度的 yield_task_fair 函数,该函数会更新任务虚拟运行时间和虚拟截止时间。do_sched_yield 函数内部同时也会调用schedule 函数,schedule函数的实现逻辑前面已经介绍过,只不过该场景__schedule 函数不会将当前进程出队,而是将当前进程从运行队列对头移动至队尾。
7.3 时间片耗完被动调度
    前面我们介绍了两种进程主动调度的场景,本节我们来介绍一种常见的进程被动调度的场景:时间片耗完。如图6所示。

图6    时间片耗完被动调度

    每个 CPU 都维护了一个高精度定制器,定时器会周期性的产生硬件时钟中断,中断函数依次会调用:tick_handle_periodic()->tick_periodic()->update_process_times()->sched_tick()->task_tick(),task_tick 函数会调用调度类成员函数 sched_class->task_tick 函数,如完全公平调度 task_tick_fair 函数,该函数会更新任务虚拟运行时间和虚拟截止时间,如果正在运行的进程时间片耗完,该函数会设置该进程的 TIF_NEED_RESCHED 标志。

    中断退出时,内核会检测进程的 TIF_NEED_RESCHED 标志,如果TIF_NEED_RESCHED 标志被设置,内核会调用 schedule 函数完成进程调度。

最后:

我的图书《图解Linux网络编程》发布了,我对Linux网络编程的应用开发技术以及内核源码进行了深入的研究,并以图解方式创作了《图解Linux网络编程》这本书,如果你想系统性地学习Linux网络编程,从底层原理到上层应用彻底通关Linux网络编程,欢迎入手我的这本书

    另外,本期文章内容来自于我的【硬核Linux】视频专栏课件,感兴趣的小伙伴请B站搜用户:物联网心球,找到投稿->充电专属

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 05:08:06 HTTP/2.0 GET : https://f.mffb.com.cn/a/501427.html
  2. 运行时间 : 0.177516s [ 吞吐率:5.63req/s ] 内存消耗:4,544.47kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=83e5a50a100b01e3185e0fee23b452fa
  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.001050s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001470s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000691s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000610s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001128s ]
  6. SELECT * FROM `set` [ RunTime:0.000505s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001191s ]
  8. SELECT * FROM `article` WHERE `id` = 501427 LIMIT 1 [ RunTime:0.001063s ]
  9. UPDATE `article` SET `lasttime` = 1783026486 WHERE `id` = 501427 [ RunTime:0.015136s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000726s ]
  11. SELECT * FROM `article` WHERE `id` < 501427 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001060s ]
  12. SELECT * FROM `article` WHERE `id` > 501427 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004046s ]
  13. SELECT * FROM `article` WHERE `id` < 501427 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001471s ]
  14. SELECT * FROM `article` WHERE `id` < 501427 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003834s ]
  15. SELECT * FROM `article` WHERE `id` < 501427 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003764s ]
0.180640s