当前位置:首页>php>当 PHP 绝杀 Swoole,能否在协程赛道逆袭 Go?

当 PHP 绝杀 Swoole,能否在协程赛道逆袭 Go?

  • 2026-06-29 15:35:32
当 PHP 绝杀 Swoole,能否在协程赛道逆袭 Go?

商务合作加微信:2230304070 

学习与交流:PHP技术自我修养微信群 

免费的phpstorm正版激活码

获取地址:https://web.52shizhan.cn

以下文章正文

research and development

传统的 PHP-FPM 架构采用“一个进程处理一个请求”的同步阻塞模式,面对海量并发时,大量的进程切换开销常常让服务器不堪重负。而 Go 语言凭借原生的 Goroutine(协程)在高并发领域大杀四方。

幸运的是,Swoole 的出现为 PHP 开发者带来了曙光,让 PHP 也能玩转高性能协程。那么,Swoole 协程与 Go 协程究竟有什么本质区别?谁才是更完美的并发利器?本文将从底层架构、源码实战到高阶选型,为你逐一拆解。

理论奠基:并发三剑客的本质区别

在深入对比前,我们必须厘清进程、线程与协程在内存与调度上的底细:

  • 进程 (Process)
    :操作系统分配资源的最小单位,拥有独立的内存空间。如启动一个 PHP-FPM 实例或 Nginx Worker。进程间切换代价极大。
  • 线程 (Thread)
    :CPU 调度的最小单位,共享进程的资源。由操作系统内核进行分时或抢占式调度。
  • 协程 (Coroutine)
    用户态的轻量级线程。它的创建、销毁和切换完全由用户态的代码(Runtime)控制,没有内核态转换开销,内存占用极小(仅几 KB)。

💡 核心优势对比:传统多线程需要通过加锁(Mutex)来死磕并发冲突,容易陷入死锁漩涡,且内核级上下文切换开销高达微秒级。协程由于是在单线程或受控的线程池内由用户态调度,切换开销降至纳秒级,执行顺序完全受控,天然规避了部分恶性的锁竞争。

Swoole 协程深度解析:进程内的单线程轮转

Swoole 的协程本质上是在单个 Worker 进程内,通过事件驱动(Event Loop)实现的单线程协作式并发。

1. 核心特性

  • 单线程复用
    :在同一个 Swoole Worker 进程中,同一时刻实际上只有一个协程在运行。
  • 协作式让出
    :当遇到 I/O 阻塞(如 MySQL 查询、Redis 读取)时,Swoole 会底层挂起当前协程,保存上下文,并将执行权交给下一个就绪的协程。
  • 一键协程化 (Runtime Hook)
    :现代 Swoole 强力推荐开启 Swoole\Runtime::enableCoroutine(),它能将 PHP 原生的阻塞式 C 扩展底层函数(如 PDOcurl)自动拦截并替换为非阻塞的协程版本。

2. 现代 Swoole 生产级代码示例

<?phpuseSwoole\Http\Server;useSwoole\Http\Request;useSwoole\Http\Response;// 🚨 黄金法则:必须在最前端开启全息 Runtime Hook,一键将传统阻塞 IO 协程化Swoole\Runtime::enableCoroutine(SWOOLE_HOOK_ALL);$server = new Server('127.0.0.1'9501);// 场景一:路由回调中,Swoole 会自动创建协程上下文环境$server->on('Request'function(Request $request, Response $response){// 即使使用原生的 PDO 驱动,在 Hook 加持下也会自动变为非阻塞协程客户端try {        $pdo = new PDO("mysql:host=127.0.0.1;dbname=test_db;charset=utf8""root""password");        $statement = $pdo->query("SELECT * FROM users LIMIT 10");        $data = $statement->fetchAll(PDO::FETCH_ASSOC);        $response->header('Content-Type''application/json');        $response->end(json_encode(['status' => 'success''data' => $data]));    } catch (\Throwable $e) {        $response->end(json_encode(['status' => 'error''msg' => $e->getMessage()]));    }});// 场景二:在 Worker 启动时,使用 go() 关键字手动创建常驻自定义协程$server->on('WorkerStart'function($server, $workerId){// 仅在第一个 Worker 进程中触发,避免重复执行if ($workerId === 0) {        go(function(){            $redis = new Swoole\Coroutine\Redis();if ($redis->connect('127.0.0.1'6379)) {while (true) {// 模拟每隔 5 秒定时消费队列                    $data = $redis->brPop(['queue:task'], 1);if ($data) {echo"异步协程消费数据: " . json_encode($data) . "\n";                    }                    System::sleep(5); // 协程安全休眠,绝不阻塞整个进程                }            }        });    }});$server->start();

Go 协程 (Goroutine) 深度解析:天生的多核并行

与 Swoole 基于多进程/单线程循环不同,Go 语言在语言级别级原生支持协程。通过大名鼎鼎的 GMP 调度模型,实现了真正的多核并行计算。

1. 核心特性

  • 关键字级支持:一个 go 关键字即可孵化一个协程,由编译器和运行时深度优化。

  • GMP 调度模型

  • G (Goroutine):协程实体,存储状态和栈。

  • M (Machine):操作系统的物理内核线程。

  • P (Processor):逻辑处理器,持有本地协程队列。M 必须绑定 P 才能运行 G。

  • 抢占式调度:Go 1.14 之后引入了基于系统信号的异步抢占。如果一个 Goroutine 长时间霸占 CPU(如死循环),Go 运行时会强制剥夺其执行权,分给其他协程,保障极低的响应延迟。

2. 现代 Go 生产级代码示例

package mainimport ("fmt""net/http""sync""time")funcmain() {// 使用 sync.WaitGroup 优雅控制协程生命周期,拒绝硬编码 sleepvar wg sync.WaitGroup    urls := []string{"URL_A""URL_B""URL_C""URL_D"}for i, url := range urls {        wg.Add(1// 计数器加 1// 动态孵化 Goroutinegofunc(id int, targetUrl string) {defer wg.Done() // 协程退出时计数器减 1// 模拟并发网络 I/O 耗时            time.Sleep(500 * time.Millisecond)             fmt.Printf("[Goroutine %d] 成功抓取 %s\n", id, targetUrl)        }(i, url)    }    wg.Wait() // 阻塞主线程,直到所有并发协程全部安全收工    fmt.Println("🎉 所有并发任务顺利完成!")}

巅峰对决:关键维度终极矩阵

实战阵痛:遭遇第三方 C 扩展阻塞怎么办?

以 MongoDB 为例,由于传统的 PHP MongoDB 驱动是用底层 C 语言编写的,并没有采用 PHP 标准的 Stream 流。这意味着 Swoole 的 Runtime Hook 无法拦截它的阻塞行为。一旦在协程内直接调用,会导致整个 Worker 进程被卡死!

Swoole 救场方案:异步 Task 进程池隔离

在 Swoole 中,如果遇到“无法协程化”的顽固硬骨头(如某些加密算法、第三方 C 扩展),最佳实践是将其投递到传统的同步 Task 进程池中进行异步化隔离,防止拖死 Worker 的事件循环。

// 投递到异步 Task 进程池中处理$server->on('Request'function($req, $resp)use($server){// 调用 taskCo 挂起当前协程,将阻塞操作丢给 Task 进程去处理,并设置 0.5 秒超时    $result = $server->taskCo(['action' => 'fetch_mongo_data'], 0.5);    $resp->header('Content-Type''application/json');    $resp->end(json_encode($result));});// Task 进程池(属于传统进程同步模式,被卡死也不影响前端 Worker 的协程流转)$server->on('Task'function($serv, $task){    $data = $task->data;if ($data['action'] === 'fetch_mongo_data') {// 在标准的 C 扩展中同步阻塞查询        $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");        $query = new MongoDB\Driver\Query([]);        $cursor = $manager->executeQuery("db.users", $query);return $cursor->toArray(); // 结果自动安全返回给原挂起协程    }returnnull;});

Go 的天然优势

在 Go 语言中,所有的第三方驱动(如官方 go.mongodb.org/mongo-driver/mongo)底层都是用 Go 原生编写的,在进行网络连接时无缝嵌入了 Go 运行时的 NetPoller(网络轮询器)。开发者无需任何特殊处理,直接编写同步风格的代码,底层就会自动切换协程,极度丝滑。

终极试炼:CPU 密集场景下的防卡死优化

如果协程内部不是 I/O 阻塞,而是纯粹的 CPU 密集型计算(如进行一亿次的死循环计算),由于没有 I/O 触发切换,两者的表现天差地别。

1. Swoole 方案:手动设定时间片让出

Swoole v4.x 曾尝试引入基于 Tick 信号的自动剥夺,但在复杂的 PHP 内存管理下容易引发不确定风险,在新版中通常建议在耗时长的循环体内部,开发者手动埋点切出

go(function(){    $start = microtime(true);while (true) {// 执行复杂的 CPU 密集型运算...// 🚨 监控时间:一旦连续占用 CPU 超过 50 毫秒,强行出让控制权if (microtime(true) - $start > 0.05) {            Co::sleep(0.001); // 挂起 1 毫秒,让出当前 Worker 给其他协程用            $start = microtime(true); // 重新计时        }    }});

2. Go 方案:高枕无忧的异步自动抢占

得益于 1.14+ 强大的 sysmon 监控内核,Go 会在后台每隔 10ms 巡检。一旦发现某个 Goroutine 霸占 M 超过 10ms,会直接下发物理信号中断其执行,将其丢回队列尾部。注:即使在某些极端古老的 Go 版本中,也只需要一行代码,即可主动交出方向盘:

funccpuIntensiveTask() {for {// 执行密集计算...        runtime.Gosched() // 显式向调度器宣告:我愿意让出 CPU,防止其他协程饿死    }}

架构师视角:总结与选型落地指南

通过全方位的拆解,我们可以看出,两款优秀的工具各有其极其显著的生存空间:

💡 选择 Swoole 的黄金场景

  1. 历史包袱严重的 PHP 老项目升级
    :如果你的团队资产全在 PHP 领域,且有现成的业务框架(如 Laravel、Hyperf、Swoole-Skeleton),使用 Swoole 可以在短时间内换取数倍的性能飙升,开发维护成本极低。
  2. 中低开销的 Web API 与长连接网关
    :借助 Hyperf 等现代协程框架,PHP 在编写高并发 WebSocket、Web 服务时同样能做到性能惊艳。

🚀 选择 Go 的黄金场景

  1. 全新的、大中型分布式微服务集群
    :原生 GMP 模型确保了服务能完美榨干多核物理服务器的最后一滴血,无需像 PHP 那样纠结开多少进程。
  2. 混合了大量 CPU 密集计算与复杂异构组件的项目
    :Go 纯粹的原生生态和健壮的抢占式机制,能让你彻底告别任何第三方组件阻塞死线程的隐患。
原文链接:
以上就是本篇文章的全部内容,希望各位程序员们努力提升个人技术。最后,小编温馨提示:每天阅读5分钟,每天学习一点点,每天进步一点点

点个赞

再走吧

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-02 21:56:28 HTTP/2.0 GET : https://f.mffb.com.cn/a/501851.html
  2. 运行时间 : 0.142208s [ 吞吐率:7.03req/s ] 内存消耗:4,659.09kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2ba6319ff301004547bcd88273d0cef5
  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.000580s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000837s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000320s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000296s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000485s ]
  6. SELECT * FROM `set` [ RunTime:0.000221s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000615s ]
  8. SELECT * FROM `article` WHERE `id` = 501851 LIMIT 1 [ RunTime:0.005850s ]
  9. UPDATE `article` SET `lasttime` = 1783000588 WHERE `id` = 501851 [ RunTime:0.010599s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.014248s ]
  11. SELECT * FROM `article` WHERE `id` < 501851 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000782s ]
  12. SELECT * FROM `article` WHERE `id` > 501851 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000480s ]
  13. SELECT * FROM `article` WHERE `id` < 501851 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.021234s ]
  14. SELECT * FROM `article` WHERE `id` < 501851 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001372s ]
  15. SELECT * FROM `article` WHERE `id` < 501851 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.009795s ]
0.143846s