当前位置:首页>php>PHP Fibers:简化异步代码并加速开发

PHP Fibers:简化异步代码并加速开发

  • 2026-06-29 18:42:09
PHP Fibers:简化异步代码并加速开发

并发请求到底有什么问题?

curl_multi_exec 架构带来了高昂的代价。为了让伪并发工作,我们不得不在每个异步边界显式地序列化和反序列化请求、响应和异常。这意味着大量的重构、新的内部工具,以及开发者必须遵循的约定,只为了正确编写新代码。随着 AI 功能的范围和数量增长,认知开销变得无法忽视。

错误处理复杂性。 处理异常、超时和边缘情况变得越来越痛苦。每个新场景——重试、网络故障、边缘情况——都需要显式处理,而且由于上下文必须在序列化边界生存,每个都添加了另一层样板代码。

分散的上下文。 最难的部分不是编写代码——而是之后阅读它。业务逻辑分散在序列化点之间:一些状态在异步边界之前,一些在之后。追踪单个负载通过系统意味着在同步工作者、异步队列之间以及返回进行心理跳跃。代码审查变得真正困难。

测试开销。 测试也变得更复杂。测试必须考虑完整的序列化/反序列化链。即使是一个简单的模拟也意味着验证多个中间步骤,而不是单个函数调用。

闲置工作者。

在引入 Fibers 之前,Meta API 调用保持同步状态——在调用点序列化和反序列化状态将需要更多重构,因此我们根本没有动它。平均响应时间约为 250ms。不至于慢到让人惊慌——但在 Manychat 的规模下,也快不到可以忽略的地步。在这段时间里,工作者进程只是闲置在那里。

底线:代码越来越难读、难测试,也难扩展。开发速度在放缓——每个人都能感觉到。

让我们重新思考的三件事

在我们审视这些结果的同时,三件事并行发生了:

1. 我们通过 PCNTL fork 解决了内存问题。 通过使用 pcntl_fork() 来生成工作者进程,我们启用了 OPcache 共享和 Linux 写时复制 ——显著降低了每个工作者进程的内存占用。从理论上讲,我们几乎可以不再担心闲置工作者;它们不再消耗那么多内存。但它们仍然消耗网络连接。所以问题并没有完全消失。

2. Ubuntu 升级暴露了一个新瓶颈。 我们从 Ubuntu 20.04 迁移到新的 LTS 版本,CPU 负载跃升了 10%。我们的代码中没有任何变化。

使用纤维的新负载处理流程

我们深入调查了。问题出在 OpenSSL 3.0 —— 与新版 Ubuntu 一起发布的 —— 它使 SSL 握手成本显著增加。OpenSSL 在 Linux 上的根证书存储是一个大型的连接文件 —— 新版本在遍历它时引入了互斥锁风格的锁定。即使 Facebook 自己使用单个根证书文件的优化也没有完全吸收这个打击。

原因是我们仍然是同步调用 Meta API。每个负载打开一个新的 TCP 连接。在 Manychat 的规模下,这很快累积起来 —— 那个 10% 的 CPU 开销成为了下一步的触发器。

所以 Manychat 的首席架构师 Anton Gorin 和我决定将我们现有的异步工作者 —— 基于 curl_multi_exec 构建的 —— 与 PHP 8.1 中引入的 Fibers 结合。

什么是 Fiber?

Fibers 是一种用于协作多任务处理的低级机制:在任何点暂停执行,后来从 exact 同一个位置恢复,没有 —— 没有线程,没有进程。

<?php$fiber = new Fiber(function(){  echo"Suspending…\n";      $last = Fiber::suspend(16);  echo"Resuming with last value {$last}\n";  });  $last = $fiber->start();  echo"Suspended with last value {$last}\n";  $fiber->resume(42);

以最后值 16 暂停;以最后值 42 恢复。

不像真正的多线程,Fibers 在单个 OS 线程中运行,不并行执行。相反,它们通过 Fiber::suspend() 和 resume 显式切换上下文。这使它们非常适合 I/O 绑定工作:在等待响应时让出控制,做其他事情,当准备好时回来。

以前,每次 HTTP 请求都意味着序列化、手动传递、等待、反序列化、恢复。以下是实际操作的样子:

  1. 同步工作进程从队列中挑选一个负载并开始处理它。
  2. 当执行遇到外部 HTTP 调用时,工作进程会将请求连同当前业务逻辑状态一起序列化,并写入异步任务队列。
  3. 异步工作进程从队列中读取,反序列化多个请求,并通过 curl_multi_exec 并发执行它们。
  4. 当响应准备好时,异步工作进程会将它连同更新后的状态一起序列化,并写回同步任务队列。
  5. 同步工作进程捡起它,反序列化一切,恢复业务逻辑状态,并从中断的地方继续。

这是这个非常复杂的流程图:

使用 Fibers,逻辑更简单了:

  1. 工作进程启动一个 fiber 并开始处理负载。
  2. 当执行遇到外部 HTTP 调用——Meta API、LLM,什么的——fiber 暂停,返回需要执行的请求。
  3. 工作流传递给 Guzzle 请求循环,该循环执行请求,如果没有带有数据的响应准备好,工作进程立即启动下一个 fiber 并开始处理另一个负载。
  4. 如果 Guzzle 循环中有任何可用响应,相应的 fiber 会从它停止的地方精确恢复。
  5. 如果该 fiber 产生另一个请求,它会再次暂停并返回循环中。

收益是什么?以及一个权衡

在单个 worker 中,多个 fiber 可能同时被挂起,等待响应到来,同时有一个 fiber 在同一时刻被积极执行,这取决于配置。

更多异步化案例 — 例如通过 Meta SDK 的 API 调用在引入 Fibers 之前,将 Meta API 调用异步化意味着在每次调用前后序列化和反序列化业务状态。我们干脆就不费这个劲了。有了 Fibers,我们只需添加一个挂起点,就搞定了。单个 Meta API 调用需要 ~250ms — 单个很小,但 Manychat 处理数十亿次。复合效果巨大。

资源节省:CPU 和连接我们重写了 Facebook SDK 的部分代码来重用连接。每个 worker 一个 HTTP/2 连接,多路复用多个请求。没有重复的 TCP 握手。没有每个请求的 OpenSSL 开销。

CPU 使用率回到了之前的水平。

异步睡眠有时我们需要等待 — 例如,在 HTTP 500 后重试之前,或在发送下一个消息前确保正确的消息顺序。普通的 sleep() 会阻塞整个进程。如果 API 错误激增且重试逻辑行为异常,你就把整个服务器给睡着了。

有了 fibers,我们可以实现异步睡眠。特定 fiber 在定义的间隔内睡眠,而 worker 继续处理其他 fibers。

更简单的代码不再需要序列化。不再需要反序列化。业务上下文停留在它该在的地方——纤维内部。开发者甚至不需要知道他们是在纤维中运行。代码看起来像普通的 PHP——因为在实际用途中,它就是。实际操作中:重试时,不再需要将请求推回队列,只需进行异步睡眠即可。

更简单的测试使用 Guzzle 测试异步代码需要巨大的努力——必须考虑完整的序列化/反序列化链,即使是一个简单的模拟也意味着要验证多个中间步骤。使用 Fibers,代码读取起来是线性的,测试也随之自然进行。话虽如此,有些事情在生产环境外很难重现——但在实践中,如果在开发环境中有效,它在生产环境中也有效。

一个权衡:爆炸半径Fibers 带来了一个妥协。以前,我们的指导原则是“宁可猛烈崩溃也不要悄无声息地忍受错误”——非致命警告,记录日志,然后终止 worker。一个负载丢失,干净的 slate。

现在,同时有多个纤维挂起,这种方式不再适用。终止 worker 会同时中断所有在飞的负载。我们重新设计了异常处理,以便可捕获的错误只终止受影响的纤维,而 worker 继续处理其他负载。致命错误——如内存不足——仍然会崩溃整个进程。如果有五个负载在飞,所有五个都会丢失。

我们能做更少的工作吗?

这意味着要处理现有的技术债务,并承诺将关键错误视为关键——真正对它们做出反应,而不是让它们滑过去。迁移到 PHP 8.5 有帮助:它为致命错误引入了堆栈跟踪,这使得诊断和修复它们变得显著更容易。

我们能做更少的工作吗?

可能。Revolt、ReactPHP、AMPHP 和 OpenSwoole 都解决了类似的问题,并能让我们免于构建自定义事件循环。特别是 AMPHP 走得更远——不仅仅是 HTTP 的异步 SQL 查询,而且开箱即用的经过实战考验的错误处理。

但我们并没有从零开始。我们已经有基于 Guzzle 的事件循环来自早期的概念验证,在此基础上添加 Fibers 是自然的下一步。今天从头开始,我们会首先看看 Revolt,并完全跳过自定义事件循环。

无论如何,我们会保留什么:开发者不需要知道他们是在 fiber 内部。包装发生在幕后。这是一个深思熟虑的选择——在大型代码库中与许多贡献者合作时,这是最重要的一部分。

稳定高速的 cc 中转平台:0011.ai ( 邀请码:ZSGYW1S6 ,可以便宜 1 美金 

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 06:44:39 HTTP/2.0 GET : https://f.mffb.com.cn/a/488761.html
  2. 运行时间 : 0.457478s [ 吞吐率:2.19req/s ] 内存消耗:4,595.88kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=e7c4f350282291b46b3bd5613b490cca
  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.001033s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001343s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001140s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002298s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001367s ]
  6. SELECT * FROM `set` [ RunTime:0.003900s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001596s ]
  8. SELECT * FROM `article` WHERE `id` = 488761 LIMIT 1 [ RunTime:0.073831s ]
  9. UPDATE `article` SET `lasttime` = 1783118679 WHERE `id` = 488761 [ RunTime:0.001881s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000761s ]
  11. SELECT * FROM `article` WHERE `id` < 488761 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.025529s ]
  12. SELECT * FROM `article` WHERE `id` > 488761 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.014093s ]
  13. SELECT * FROM `article` WHERE `id` < 488761 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.149132s ]
  14. SELECT * FROM `article` WHERE `id` < 488761 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.066907s ]
  15. SELECT * FROM `article` WHERE `id` < 488761 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.022353s ]
0.459069s