当前位置:首页>python>Python异步与并发,我用一个寓言搞懂了它(一)

Python异步与并发,我用一个寓言搞懂了它(一)

  • 2026-07-03 02:16:33
Python异步与并发,我用一个寓言搞懂了它(一)

一直知道asyncio里有事件循环、Task、Future这些概念,也知道进程、线程、协程是三个不同的层级,但具体谁包含谁、谁调度谁,一直是模糊的。这次决定先用一个寓言把整体骨架立住,再逐个对答案。


一、寓言

总站的调度大厅里,三种岗位的人各管各的事。

楼层管理员管的是整栋楼——电力、空调、电梯,谁出问题都归她兜底,楼层之间互不影响,这栋楼塌了不会牵连隔壁那栋。

每个楼层里,有几个班组长,他们共用这层楼的水电和会议室,但各自带着自己的人干活,互相不知道对方在忙什么,只有班组长出了岔子,整层楼才会跟着乱。

班组长手底下,是真正干活的接线员,一群人挤在同一张办公桌前,共用同一台电话机——这意味着同一时间,只能有一个人拿着话筒说话,其他人只能等着。

接线员处理的电话有个特点:打进来的人讲一段话,常常要停下来去查一份资料,这一停,可能就是几十秒。班组长发现,如果死等接线员查完资料才让下一个人接电话,整张办公桌一上午都办不了几件事。

于是班组长定了个规矩:哪个接线员需要停下去查资料,就把话筒放下,喊一声"我先放着",立刻让位给下一个准备好说话的人;等资料查完了,自己重新排到队尾,轮到了再接着刚才没说完的话。

这个规矩有个前提——办公桌前永远站着一个调度员,专门盯着所有放下话筒的人,一旦有人查完资料、重新准备好了,调度员立刻喊他上前继续。没有调度员,整张桌子就会乱成一团,谁都不知道该谁了。

有一次,一个接线员接到一个特别复杂的单子,他没有自己处理,而是写了张纸条,让旁边一个新来的小伙子去专门跑这一件事——这张纸条上写着客户的号码、要查的内容,还留了一个空格,准备等结果出来填进去。新来的小伙子拿着纸条出去查,查完回来,把结果填进那个空格,喊一声"好了",原来的接线员才把这张纸条接回来,继续往下办。

调度员从不关心办公桌前到底坐了几个人,她只认一件事:谁的纸条上"空格"已经填上了结果,谁就该被叫上前继续。

那天晚上,新来的小伙子问班组长:"咱们这一张桌子,一台电话,怎么能同时处理这么多单子?"

班组长说:"桌子是一张,但谁也没真的同时说话。是谁该停就停,该让就让,调度员看准时机,一个一个安排上。看起来同时在办,其实从头到尾,话筒只在一个人手里。"


二、概念解析

这则寓言讲的是Python asyncio异步编程的核心调度体系,涉及两个层面:进程、线程、协程这三种执行单元的资源量级和独立性差异,以及协程具体怎么被调度的三个组件——事件循环、Task、Future

故事元素
对应概念
楼层管理员管整栋楼,楼塌了不牵连隔壁楼
进程:操作系统资源分配的最大单位,独立内存空间,一个进程崩溃不影响其他进程
班组长共用这层楼的水电,但出岔子整层楼跟着乱
线程:共享进程资源,独立性中等,由操作系统抢占式调度
接线员挤在同一张办公桌前,共用同一台电话机
协程:依附于线程运行,同一时间只能有一个协程真正在执行
接线员说到一半,需要查资料就放下话筒喊"我先放着"
await
:协程主动让出控制权,告诉调度方"我在等结果,先让别人来"
调度员专门盯着谁查完资料、重新准备好了,喊他继续
事件循环:调度中枢,检测就绪的协程,分配执行权
接线员写纸条让新来的小伙子专门跑一件事,纸条留了空格等结果
Task:把一个具体任务包装成可被调度的单元,跟踪它的执行状态
纸条上的"空格",结果填进去之前是空的,填上之后才能被接回去
Future:异步操作的结果容器,结果还没出来时是空的,出来后被自动填充
调度员只认"纸条空格填上了没",不关心桌子前坐了几个人
Task是Future的子类,事件循环通过检测Future/Task的完成状态来决定调度谁
整张办公桌只有一台电话,看起来同时办很多单,其实话筒始终只在一个人手里
协作式调度的本质:协程并非真正并行,是通过主动让出和被唤醒,在同一线程内轮流执行

三、检验问题

  1. 理解检验(协程为什么不是真的"同时"在执行):故事结尾班组长说"看起来同时在办,其实从头到尾,话筒只在一个人手里"。请具体说明:如果办公桌前真的有两个接线员同时拿着两个话筒说话(不是轮流),这种情况更接近进程、线程,还是协程?协程和这种"真正同时"的方式,根本区别是什么?

  2. 理解检验(调度员的职责边界):故事里调度员"只认纸条空格填上了没",不关心桌子前坐了几个人。请说明:如果某个接线员查资料的时候忘了喊"我先放着",直接占着话筒傻等结果,会对整张办公桌造成什么影响?这跟协程里"该用await却没用、或者写了阻塞式代码"的后果,是不是同一个问题?

  3. 理解检验(Task和Future的关系):故事里"纸条"和"调度员盯着的空格",分别对应Task和Future。请说明:为什么"纸条本身"(Task)需要比"空格"(Future)多做一件事——也就是说,Task除了等结果,还要多负责什么,这跟Future单纯"装结果"有什么不同?

  4. 迁移检验(进程/线程/协程的选型):假设你现在要做一个程序,需要同时做三件事:1)下载100个网页的内容(网络IO,大部分时间在等服务器响应);2)对一张超大图片做像素级的数学运算(纯CPU计算,没有等待);3)运行两个完全独立的、互不通信的子系统,一个崩溃不能影响另一个。请分别说明这三件事最适合用进程、线程还是协程来处理,依据故事里"资源量级"和"独立性"这两个维度说明原因。

  5. 迁移检验(事件循环的必要性):如果故事里没有调度员,让接线员们自己看谁的话筒空了就自己抢上去说话,会出现什么问题?这跟你理解的"如果异步代码里没有事件循环,协程之间会怎样"是不是同一个道理?请具体描述会出现的混乱情况。


四、我卡住的地方(按发生顺序)

1. 把协程的"同进程"说成了关键点,漏了"同线程"这个更准确的层级

第一次回答协程和"真正同时"的区别时,说"是同进程,协程本质上是去掉等待时间"。

这个理解方向对,但还差一步。协程不止是"同进程",更准确说是同一个线程内——多个协程是在同一条线程内轮流执行,根本不存在被分配到不同CPU核心同时跑这件事,这才是协程和真正并行(多进程、多线程跑在多核上)最根本的区别。

2. 把await理解成"自己完成后等待别人完成"

回答await是什么时,最初说"await就是自己完成后等待别人完成",并因此对"如果没有await是不是就必须同步"这个问题感到混乱。

这个说法不准确。await不是"等别人完成",重点也不在"等"这个动作本身,而是协程主动把控制权让出去——遇到一个需要等待结果的操作时,协程说"我现在要等,你先去推动别的协程",这才是协作式调度的核心。"没有await是否必须同步"这个问题的答案是:取决于代码本身是不是阻塞的——如果在async def函数里调用了一个本身是同步阻塞的操作(没有用异步版本的写法),就算外层包了async,内部依然会卡住整个线程,因为没有真正把控制权让出去,事件循环没机会调度别的协程。这是协程编程里最容易踩的坑。

3. 把Task多做的事理解成了"监控完成状态"

回答Task比Future多负责什么时,最初说"Task需要多负责监控有没有完成,没完成去返回,然后代码通过反馈去处理"。

这个说法不够准确。Future本身就自带"完成状态"这个属性,所以"监控完成"不是Task独有的事。Task真正多做的是:把一段协程代码包装成可以被事件循环主动调度执行的单元。协程单独存在时只是一段定义好的函数,自己不会跑起来;必须通过asyncio.create_task()包装成Task之后,事件循环才会主动去推动它执行。Future只是一个"结果容器",被动等着填充,不会主动驱动任何代码运行。

4. 把Future的"填充结果"理解成需要"有人去填写"

解释Future时,说"任务都做好了,但需要有人填写"。

这个顺序和主体说反了。不是"任务做好了之后需要有人去填写",而是Future先在任务还没做好的时候就被创建出来(空的),代表"将来会有结果"这个占位承诺;等异步操作真正完成的那一刻,结果会自动填进去,不需要额外有人手动操作。await这个Future,意味着在结果填上之前协程会被挂起,结果一旦自动填上,协程立刻被唤醒继续执行。


五、串起来的逻辑链

进程(独立资源,互不影响)→ 线程(共享进程资源,操作系统抢占式调度)→ 协程(依附线程,同一时间只有一个真正执行,协作式调度)→ 协程通过await主动让出控制权 → 事件循环检测谁已就绪,分配执行权 → Task把协程包装成可被事件循环驱动的单元 → Future作为结果的占位容器,完成时自动填充并唤醒等待者

这条链解决的核心问题是:怎么在不依赖操作系统强制切换的情况下,让大量需要"等待"的任务高效地轮流执行,不浪费等待的时间。协程之所以轻量,正是因为它不需要操作系统介入,靠的是协程自己主动配合、事件循环统一调度这套机制。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 03:11:17 HTTP/2.0 GET : https://f.mffb.com.cn/a/500337.html
  2. 运行时间 : 0.173343s [ 吞吐率:5.77req/s ] 内存消耗:4,803.96kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=bc3580e2ac8ca1a31714becb5d501454
  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.000551s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000729s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001449s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.007542s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000694s ]
  6. SELECT * FROM `set` [ RunTime:0.002362s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000652s ]
  8. SELECT * FROM `article` WHERE `id` = 500337 LIMIT 1 [ RunTime:0.003142s ]
  9. UPDATE `article` SET `lasttime` = 1783105878 WHERE `id` = 500337 [ RunTime:0.006959s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.001257s ]
  11. SELECT * FROM `article` WHERE `id` < 500337 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002537s ]
  12. SELECT * FROM `article` WHERE `id` > 500337 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002329s ]
  13. SELECT * FROM `article` WHERE `id` < 500337 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.023280s ]
  14. SELECT * FROM `article` WHERE `id` < 500337 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.022053s ]
  15. SELECT * FROM `article` WHERE `id` < 500337 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.027315s ]
0.175189s