当前位置:首页>python>单线程协作式异步调度机制 Python asyncio 事件循环

单线程协作式异步调度机制 Python asyncio 事件循环

  • 2026-08-18 23:11:08
单线程协作式异步调度机制 Python asyncio 事件循环
一、为什么需要异步?
    一台 Web 服务同时承载上万客户端连接,传统同步模型采用「一条连接对应一条线程」的设计,海量线程会带来频繁上下文切换、栈内存占用过高、共享资源锁竞争等一系列性能瓶颈。 线上业务绝大多数耗时都消耗在 IO 等待:查询数据库、调用第三方接口、定时延时等,同步线程阻塞等待期间 CPU 全程闲置,硬件资源利用率极低。Python asyncio 提供的单线程协作式异步模型,正是为解决资源浪费、提升并发能力而生,事件循环是整套异步体系的调度中枢。 异步核心设计目标:任务遇到 IO 阻塞时主动释放 CPU 执行权,自身挂起等待;待 IO 就绪后再恢复运行,充分利用 CPU 空闲时间。而协程的创建、执行、暂停、唤醒全生命周期流转,全部依靠事件循环驱动调度。

二、协程、事件循环、Future三个基本概念

2.1 协程(Coroutine):可中断、可恢复的函数

普通函数一旦调用必须完整执行完毕,执行过程无法中断;协程支持在代码中间主动暂停,外部条件就绪后,从暂停的位置恢复继续运行。

import asyncioasync def api():      print("开始处理请求")      # 触发等待逻辑,协程暂停,释放CPU执行权      data = await fetch_from_db()      # IO完成后,从此处恢复执行      print(f"拿到数据: {data}")      return process(data)

await是协作调度的核心标识:执行权由协程主动上交,而非操作系统强制抢占。

2.2 事件循环(Event Loop):单线程统一调度中心

整个异步程序仅存在一条操作系统主线程,事件循环是这条线程上的调度中枢,维护两套任务队列,统一管控所有协程状态流转:

  • 就绪队列:无阻塞等待、拿到CPU即可运行的协程任务;
  • 等待队列:执行至await触发IO/定时,主动放弃CPU、挂起等待的协程任务。
  事件循环是唯一的调度中枢,跑在单条操作系统线程上。它只干三件事:
  1. 从就绪队列取任务 → 分配 CPU 执行

  2. 遇到 await → 保存现场,任务移入等待队列

  3. IO 完成/定时到期 → 唤醒任务,移回就绪队列

2.3 Future:异步操作占位对象

Future用于抽象尚未完成、未来会产出结果的IO/定时操作。await的底层逻辑,本质是阻塞当前协程,持续监听绑定的Future对象完成状态。

future = asyncio.Future()# 某个 IO 操作完成后调用 future.set_result(data)await future  # 协程在这里挂起,直到 future 有结果

三、从请求接入到协程销毁完整调度链路

3.1 阶段一:协程创建,入队等待调度

Web框架接收到客户端HTTP请求后,会生成对应处理逻辑的协程对象:

# 框架接收请求,定义异步处理函数async def handle_request(request): return await api()# 生成协程对象,仅定义逻辑,不会立刻执行coro = handle_request(request)# 封装为Task任务,注册至事件循环task = asyncio.create_task(coro)# Task进入就绪队列,等待主线程调度分配执行权

关键区分:协程对象只是一段待执行逻辑,只有注册到事件循环,才具备被调度执行的能力。

3.2 阶段二:协程执行,await触发让出CPU

事件循环从就绪队列取出Task,将主线程CPU执行权分配给协程:

async def api():  a = 1  b = 2  # 普通同步代码,占用CPU连续执行  # 触发IO等待逻辑  result = await aiohttp.get("http://api.com")  # 执行到await时触发完整挂起流程:  # 1. 保存当前执行现场:局部变量a、b,代码断点位置,完整调用栈  # 2. 协程暂停,释放CPU执行权交还给事件循环  # 3. 协程移入等待队列,绑定网络socket监听事件  # IO就绪后,从此处恢复执行  c = a + b + result  return c

协程保存现场仅需记录栈帧、局部变量、程序计数器几个指针,属于纯用户态操作,开销远低于操作系统线程上下文切换。

3.3 阶段三:IO多路复用监听,任务唤醒流转

协程因网络IO挂起后,socket文件描述符会注册至操作系统IO多路复用器(Linux epoll、macOS kqueue、Windows IOCP):

    整个唤醒链路无内核线程切换,仅涉及系统调用、用户态回调、队列数据迁移,性能损耗极低。

    3.4 阶段四:协程恢复执行,完成后销毁

    协程重新进入就绪队列后,等待事件循环分配主线程:

      四、事件循环底层调度算法

      事件循环持续执行run_forever主循环,每一轮迭代严格遵循「就绪任务优先→定时器检测→IO 阻塞监听」的执行顺序,简化伪代码如下:

      def run_forever(self):    while self._running:        # 优先执行已经就绪的回调(call_soon、Future 回调等)        self._run_ready_callbacks()        # 检查定时器,将到期回调放入 _ready 队列(注意:不是立即执行)        self._run_timers()        # 若 _ready 队列仍有任务,timeout=0,防止阻塞延迟        timeout = 0 if self._ready else self._next_timer_timeout()        # 阻塞等待内核 I/O 事件,超时后返回空列表        events = self._selector.select(timeout)        # 将 I/O 就绪的回调(如 socket 可读/可写)追加到 _ready 队列        for key, mask in events:            key.data()  # key.data 是之前注册的回调函数

      流程逻辑说明

      1. 先消费就绪队列
        每轮循环第一步优先跑完当前所有就绪任务,避免新 IO 事件抢占正在排队的协程,保证回调执行公平性。
      2. 处理定时任务
        遍历定时器最小堆,把所有已到期的定时回调移入就绪队列,本轮不会立刻执行,等待下一轮循环统一调度。
      3. 动态计算阻塞超时时间
        如果此时就绪队列还有未执行任务,timeout=0,直接跳过 IO 阻塞,立刻回去执行就绪任务;就绪队列为空时,超时时间取最近一个定时器的剩余时间,避免无意义长时间阻塞。
      4. IO 多路复用阻塞监听
        调用select阻塞等待内核 socket 事件,到达超时时间无 IO 则直接返回;检测到可读 / 可写事件后,执行预先绑定的回调函数,内部会标记 Future 完成,将对应协程送入就绪队列,等待下一轮调度恢复执行。

      五、协作式异步 vs 抢占式多线程

      协作式异步存在硬性约束:所有IO、延时逻辑必须显式使用await标记;若插入time.sleep、同步数据库等阻塞代码,会独占唯一主线程,阻塞全部请求。

      对比维度
      抢占式多线程(Java 线程)
      单线程协作式异步(asyncio)
      调度权归属
      操作系统内核强制切换
      协程通过await主动让出执行权
      切换开销
      高,需保存完整线程内核上下文
      极低,仅保存用户态栈帧与指针
      并发承载上限
      数千线程内存、调度压力触顶
      百万级协程稳定运行
      线程安全
      共享内存存在竞态,必须加锁
      单线程串行执行,无资源竞争,无需锁
      阻塞影响范围
      单线程阻塞仅影响自身,其余线程正常运行
      同步阻塞代码不写await,全局事件循环卡死
      最优适用场景
      CPU 密集型计算任务
      IO 密集型高并发 Web、接口服务

      六、协程完整生命周期流程图

      七、底层设计核心思想

      1. 放弃同步阻塞,改用IO事件注册

      传统同步IO:

      data = socket.recv(1024)# 线程原地阻塞,CPU完全闲置,无法处理其他请求

      异步非阻塞IO:

      data = await loop.sock_recv(sock, 1024)# 注册socket监听事件,主动让出CPU,主线程处理其他任务

      2. 单线程是性能优势

      同一线程内串行执行所有协程,不存在多线程内存竞争,无需引入互斥锁、信号量做同步控制;同时规避了内核线程切换的性能损耗,并发安全由执行模型天然保障。

      3. await是显式协作契约

      await是代码中唯一允许任务切换的固定节点,协程切换位置完全可预判,程序运行逻辑具备极强可预测性,区别于操作系统随机抢占的多线程调度。

      八、总结

      单线程协作式异步调度的核心逻辑:协程执行至IO等待点时主动让出CPU,挂起进入等待队列;IO或定时器就绪后重新进入就绪队列排队,由唯一事件循环统一调度复用单条主线程,在等待间隙处理其他请求,以极低调度开销实现IO密集场景高并发。

      事件循环作为调度中枢、协程作为最小执行单元、await作为协作切换标识,三者配合完成整套无锁、轻量的单线程并发模型。

      最新文章

      随机文章

      基本 文件 流程 错误 SQL 调试
      1. 请求信息 : 2026-08-22 00:04:46 HTTP/2.0 GET : https://f.mffb.com.cn/a/506036.html
      2. 运行时间 : 0.548178s [ 吞吐率:1.82req/s ] 内存消耗:4,308.13kb 文件加载:140
      3. 缓存信息 : 0 reads,0 writes
      4. 会话信息 : SESSION_ID=d92875aed5bdcc6cf3e07de28d6dd237
      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.000412s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
      2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000583s ]
      3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.007831s ]
      4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.006623s ]
      5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000504s ]
      6. SELECT * FROM `set` [ RunTime:0.010364s ]
      7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000556s ]
      8. SELECT * FROM `article` WHERE `id` = 506036 LIMIT 1 [ RunTime:0.003549s ]
      9. UPDATE `article` SET `lasttime` = 1787328286 WHERE `id` = 506036 [ RunTime:0.004489s ]
      10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.011006s ]
      11. SELECT * FROM `article` WHERE `id` < 506036 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.018843s ]
      12. SELECT * FROM `article` WHERE `id` > 506036 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.102975s ]
      13. SELECT * FROM `article` WHERE `id` < 506036 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.132994s ]
      14. SELECT * FROM `article` WHERE `id` < 506036 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.052540s ]
      15. SELECT * FROM `article` WHERE `id` < 506036 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.105303s ]
      0.549744s