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

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

  • 2026-06-27 23:39:41
Python异步与并发,我用一个寓言搞懂了它(三·完结)

前两篇讲了协程的调度生态,以及单个协程怎么应对等待和意外。这一篇要讲最后一组问题:当多个协程要协调着一起工作,怎么限制并发数量、怎么传递数据、怎么避免互相抢同一份资源、怎么知道一条连接是不是还活着。


一、寓言

便利店只有一台咖啡机,但同时有五个顾客想买咖啡。

店员在咖啡机前贴了一张纸条:"同一时间最多两人在这台机器前操作,其他人请在线外等。"

第三个顾客走过来想直接插队操作,店员拦住他:"前面两个人还没让出位置,你先在外面等,机器腾出空位,我立刻叫你。"

这条规矩不是为了为难谁,店员后来跟新来的同事解释:"咖啡机只有两个出水口,硬挤五个人上去,谁的咖啡都做不好,还容易撞洒。"

店里另一边,有个传菜口,专门处理"做好的三明治"——后厨做完一个三明治,放进传菜口的格子里,前台什么时候有空,就来拿一个。后厨做得快、前台取得慢的时候,格子会越堆越满;格子满了,后厨就先停手,不再硬塞,等前台腾出空位再继续做。前台取得快、后厨跟不上的时候,前台就站在传菜口前面等一下,不会自己跑去后厨催。

格子,谁先放谁先拿,不会插队乱拿。

收银台有个特殊的抽屉,专门放当天的现金,只有一把钥匙。早班店员要点钱的时候,得先拿到钥匙,点完了把钥匙放回原处,晚班店员才能用这把钥匙去点自己的那一份。同一时间,钥匙只能在一个人手里,没拿到钥匙的人,只能等着,不能两个人同时伸手去抽屉里翻钱——那样年底对账,谁也说不清这笔钱到底是谁动的。

店里墙上还挂着一个小铃,专门用来提醒"今天的牛奶到货了"。送奶工把牛奶放进冰箱后,按一下铃。店员平时不会一直盯着冰箱看牛奶到没到,铃响了才会过去处理,铃不响,她就先干别的事。

某天傍晚,外卖平台那条专线忽然没动静了——平常这条线每隔几分钟就有一个新订单提示音,今天安静了快十分钟。店员起了疑心,给平台客服打了个电话,才知道是网络出了问题,线断了。她没有干等,让前台暂时改用电话接单,等平台那边修好网络,订单提示音重新响起来,才切回去。

新来的同事问她:"你怎么知道线断了,不是没人点单?"

店员说:"平时这条线,哪怕没有新单,每隔一会儿也会嘀一声,告诉你它还连着。突然彻底没声了,那就不是没人点单,是线本身出问题了。"


二、概念解析

这则寓言讲的是asyncio里几个跟"多协程协调"相关的核心机制:并发限制(Semaphore)、队列(Queue)、锁(Lock)、事件(Event),以及流式响应场景里的背压(Backpressure)、心跳(Heartbeat)、断连处理(Reconnection)

故事元素
对应概念
咖啡机最多两人同时操作,其他人在外面等
信号量(Semaphore):限制同时运行的协程数量,超出上限的请求排队等待
传菜口的格子,做好的三明治放进去,前台来取
队列(Queue):协程间的数据传递管道,生产者放、消费者取,互不直接打交道
格子堆满了后厨先停手,等前台腾出空位再继续
背压(Backpressure):生产者速度快于消费者时,队列满了自动让生产者暂停,防止数据堆积
抽屉只有一把钥匙,同一时间只能一人用
锁(Lock):保证同一时间只有一个协程能访问共享资源,避免数据冲突
牛奶到货按一下铃,店员铃响了才处理
事件(Event):协程间的信号通知机制,不带数据,触发后等待方才会被唤醒
外卖专线平时每隔几分钟就有声音,证明线还连着
心跳(Heartbeat):定时发送的存活信号,用来确认连接没有断开
线忽然彻底没声,店员判断是网络问题,改用电话接单
断连处理(Reconnection):检测到连接异常后,启用备用方案,待恢复后再切回原通道

三、检验问题

  1. 理解检验(信号量限制的必要性):故事里店员坚持"同一时间最多两人在咖啡机前操作",哪怕外面排着三个人等。请具体说明:如果不设这个限制,让五个人同时挤在咖啡机前操作,会出现什么实际问题?这跟程序里"不限制并发数量,让1000个协程同时发起网络请求"会导致的后果,是不是同一类问题?

  2. 理解检验(队列和背压的关系):故事里"格子堆满了,后厨就先停手",没有人下命令,是格子本身的状态决定了后厨该不该继续做。请说明:如果队列没有设置"最大容量"这个上限,后厨做得比前台取得快很多,会发生什么?这跟"没有背压机制"会导致的问题是不是一回事?

  3. 理解检验(锁解决的是什么问题):故事里强调"不能两个人同时伸手去抽屉里翻钱,否则年底对账说不清"。请具体说明:如果两个协程同时去修改同一个共享的数据(比如同时给同一个账户余额加钱),没有加锁保护,可能会出现什么样的错误结果?

  4. 迁移检验(心跳机制的设计):假设你在维护一个Agent的WebSocket长连接,需要判断这条连接是不是还活着(而不是已经断开但你没发现)。请具体说明:你会怎么设计这个心跳机制?多长时间发一次心跳合适,连续几次没收到心跳就该判定为断连,为什么不能等用户主动反馈"连不上了"才处理?

  5. 迁移检验(队列+并发限制的组合应用):假设你在做一个图片处理服务,用户可以同时提交多张图片等待处理,但服务器一次最多只能同时处理3张图片(处理图片很耗CPU)。请具体说明:你会怎么组合使用队列和信号量(或并发限制机制)来设计这个系统,确保不会因为同时处理太多图片导致服务器卡死,同时用户提交的每张图片都不会被遗漏?


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

1. 把"5人挤咖啡机"的问题归因到协程本身的资源消耗,没答到题目真正问的点

回答第1题时,最初的回答转向了协程和线程的对比(协程更轻量、线程依赖操作系统调度、是抢占式而非协作式),这些对比本身没有错,但没有回答题目真正问的问题。

题目问的核心是:5个人挤一台只有两个出水口的咖啡机,和1000个协程同时发起网络请求,这两者出问题的根源是不是一回事。答案是:是同一类问题,根源不在于协程"轻不轻",而在于协程发起的请求最终都要打到一个真实存在、容量有限的外部资源上——可能是网络带宽,可能是目标服务器的处理能力上限,可能是本地能维护的连接数。协程本身的调度成本确实很低,但这不能让外部资源变得无限大。1000个协程同时发请求,可能瞬间打满带宽,或者把目标服务器直接打垮,这跟"5个人挤两个出水口,谁的咖啡都做不好还容易撞洒"是同一个道理:出口的容量有限,涌入的数量超过这个容量,照样会出问题。

2. 队列没有上限会怎样,回答得比较笼统,没具体说出后果

回答第2题时,最初的描述是"会导致后台堆积很多数据,生产者那边也会有问题,占用也会导致混乱",方向对,但停留在比较模糊的层面。

更具体的说法应该是:如果队列没有设置最大容量,后厨做得比前台取得快很多,格子会无限堆积,占用的内存会一直增长,直到把系统内存耗尽,最终可能导致程序崩溃。这正是"没有背压机制"的核心问题——背压的本质就是给队列设一个上限,超过上限就让生产者自动暂停(await queue.put()会在队列满时阻塞),而不是任由队列无限膨胀。

3. 提到了乐观锁但没有把"抽屉钥匙"对应到具体该用的锁类型,也没答出没加锁的具体错误结果

回答第3题时,提到了数据库的乐观锁机制(版本号检测冲突),这部分理解是对的,但提到协程用的"不是乐观锁,是悲观锁"时说"具体忘了",没有说清楚故事里"抽屉只有一把钥匙"对应的正是悲观锁asyncio.Lock)——协程要修改共享数据前,先尝试拿到锁,没拿到的就排队等,这跟"抽屉只有一把钥匙,没拿到钥匙的人只能等着"完全对应,是"先占座再操作"的思路,跟乐观锁"先改了再检查版本号冲不冲突"正好相反。

题目还问到"没加锁会出现什么具体错误结果",这部分没有展开。具体说:账户余额本来是100,协程A读到100准备加10变成110,协程B几乎同时也读到100准备加20变成120,如果两者交替执行没有加锁保护,可能A先写回110,随后B基于它读到的旧值100写回120,最终结果是120,但正确结果应该是130——这就是"数据覆盖丢失",少加的那一笔凭空消失了。

4. 心跳机制的具体参数,用"看业务决定"回避了题目要求的具体设计

回答第4题时,理解了心跳的作用(判断连接是否存活、比用户主动反馈更早发现问题),但被问到"多长时间发一次、连续几次没收到判定断连"这两个具体参数时,回答是"具体怎么做要跟业务来",没有给出实际的设计思路。

更完整的答案是:心跳间隔通常设置在几秒到几十秒之间(比如30秒一次),这是一个权衡——太频繁会浪费带宽和资源,太稀疏会导致断连后很久才被发现。判定断连,通常不是"一次没收到就判定",而是连续错过2到3次心跳才判定,这样可以容忍一次偶然的网络抖动,避免误判。"为什么不能等用户主动反馈"——因为用户往往不会立刻意识到连接已经断开(可能只觉得"有点卡"),服务器主动检测心跳能更早发现问题,主动启动重连或切换备用方案,而不是被动等用户投诉后才处理。


五、串起来的逻辑链(系列总结)

协程虽然轻量,但发起的操作最终要打到容量有限的外部资源上 → 用信号量限制同时涌向某个资源的并发数量 → 用队列在生产者和消费者之间传递数据,互不直接打交道 → 队列设置上限形成背压,防止生产者远快于消费者时无限堆积耗尽内存 → 用锁保证同一时间只有一个协程能修改共享数据,避免并发写入导致数据覆盖丢失 → 用事件做不带数据的信号通知,触发后唤醒等待方 → 用心跳定时确认长连接是否存活,连续错过才判定断连,主动启用备用方案

三篇文章合起来看,是同一件事的三个层次:第一篇讲清楚了协程被谁调度、怎么调度;第二篇讲清楚了单个协程怎么应对等待和意外;这一篇讲清楚了多个协程协作时怎么避免互相冲突、怎么确认彼此还活着。三层叠在一起,才是一套完整、稳定、可持续运行的异步并发系统该有的样子。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-02 23:26:45 HTTP/2.0 GET : https://f.mffb.com.cn/a/500472.html
  2. 运行时间 : 0.308432s [ 吞吐率:3.24req/s ] 内存消耗:4,627.04kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cd2fb7cec3fc2fb44039204f872437b0
  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.001088s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001472s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.018494s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001124s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001619s ]
  6. SELECT * FROM `set` [ RunTime:0.013806s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001740s ]
  8. SELECT * FROM `article` WHERE `id` = 500472 LIMIT 1 [ RunTime:0.001314s ]
  9. UPDATE `article` SET `lasttime` = 1783006005 WHERE `id` = 500472 [ RunTime:0.039615s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000872s ]
  11. SELECT * FROM `article` WHERE `id` < 500472 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001717s ]
  12. SELECT * FROM `article` WHERE `id` > 500472 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001119s ]
  13. SELECT * FROM `article` WHERE `id` < 500472 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.011805s ]
  14. SELECT * FROM `article` WHERE `id` < 500472 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002180s ]
  15. SELECT * FROM `article` WHERE `id` < 500472 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.022212s ]
0.312471s