当前位置:首页>php>PHP“垂死”十年

PHP“垂死”十年

  • 2026-01-08 03:58:27
PHP“垂死”十年
作者 | Italo Baeza Cabrera
译者 | 张健欣
策划 | Tina
对于一门古老的语言来说,支撑未来技术的东西不是与时俱进吗?

差不多一年前,我发布了一篇题为“PHP 可能在未来十年消失”的文章。我发布的这篇文章的总结就像一首《圣诞颂歌》,但不是 Ebenezer Scrooge(电影《圣诞颂歌》中的一个商人角色),而是 PHP:

  • 过去,PHP 没有修复它的问题,所以其它语言变得更有吸引力。

  • 现在,PHP 缺乏当前互联网所需的特性。

  • 将来,PHP 仍然不会有有意义的特性。

请注意,我从来没有写过“垂死”、“不要用它”,甚至“现在就放弃你的 PHP 项目!”。我只是说它会在 2030 之前的任何时候变得不再有意义,并对此为什么会发生做了的一个简单的解读。

考虑到 PHP 庞大的用户基础,一些指出 PHP 缺点的文章,往往会引爆一些狂热者。他们认为 PHP 是完美的,仅仅因为它很方便,或者因为他们花了 10 多年时间使用 PHP。我的文章也不例外。不管如何,我决定把它从消极的阴云中拉出来,给予更多思考。

1这不是我的问题,而是你的问题

首先说明,我对 PHP 或者任何语言都没有个人恩怨。我认为它是一个非常成熟的工具,当我需要“昨天”的东西时,它也是我最喜欢使用的东西,因为它作为解释型语言非常方便,而且生态系统就在那里。

这也与代码质量无关。你不能因为开发人员没有“正确地”使用一种语言,而责怪它,至少不能全怪。不论你的福特或兰博基尼多么炫酷:如果你不关心它,维护就会很痛苦。

这也与世界上有多少人使用 PHP 无关。如果我们选择“用户基础最高”,那么现在就开始将代码迁移到 Javascript。这场比赛他们轻而易举就赢了,无可匹敌。

先不说“是否被重要公司使用”——稍后再谈。JavaScript 对于 SpaceX 的任务已经非常关键,所以显然它不是一种糟糕的语言,否则宇航员的生命就面临风险。

只是现在,PHP 变成了一个只会玩一种把戏的小马。这门语言以蓬勃发展的 web 开发闻名,但官方不愿采取进一步措施。而其它语言已经在进一步改进了。那是死亡的奥秘。

2语言会“死”吗?

让我们以古老的编程语言之一 COBOL 为例。

几十年前,银行和保险公司背后的一些老的金融系统都是用 COBOL 编程的。世界各地的许多金融机构仍在他们的大型机中使用 COBOL,主要的一个原因是:它仍然工作。这一点的证明是,由于流行病的爆发,COBOL 雇佣人数突然增加,以维持这些来自世界各地的不断受到冲击的古老系统。

COBOL 没有死,但这意味着什么呢?有一些工具可以使基于 COBOL 的软件与当今人们的需求兼容,比如网页,即使这意味着用一个简单的工具将火箭固定在砖块上。仍然有人需要编写和维护 COBOL。甚至有一些公司为基于 COBOL 的系统提供某种支持。

我们可以放心得出结论:编程语言是不可能被消灭的。总有一个混蛋用它来赚钱,还有一个混蛋提供第三方支持来赚更多的钱。这是一种双赢的局面。

在企业文化中,如果你的技术栈没有使公司“损失”任何钱,那就没关系了。否则,你就会像亚马逊因为他们自己的 AWS 数据库而抛弃了甲骨文一样。

3如果它没有死,那怎么“淡出”呢?

COBOL 没有死,它只是“淡出了”:没有一个头脑正常的人会使用 COBOL 启动一个新项目,因为有更好的工具。这些工具拥有更高的性能、更好的可靠性、更方便编程或者有用的特性。在 COBOL 时代,还没有 HTTP 协议、多线程和虚拟化等当今软件所使用的其它有用技术。

当人们不再在新项目中使用一种语言时,多米诺骨牌开始倒塌。针对这种语言的工具不再诞生和维护。由于没有需求,语言不再引入新特性,社区不再创造新的工具集,它不再传播到其它生态系统中——比如 Node.js 出现在服务器端。没有新的程序员学习这门语言,已经学习这门语言的程序员迁移到了“更绿色的牧场”。

这也意味着,公司不愿意投资于语言本身,包括雇佣程序员。与更丰富的语言相比,这变得更难找到这门语言的开发者,因此给这门语言的开发者支付的薪酬也需要更高。此时,迁移到劳动力成本更低的新平台成为公司的一种选择。

COBOL 的情况与 Visual Basic、ASP .Net、Pascal、Fortran、ActionScript、Objective C、Haskell、Ruby 等许多其它服务端语言一样。它们完成了它们的技术周期,更好的语言用更多特性和工具集,或者更少的烦恼,取代了它们,就像 PHP 在 2000 年代中期针对互联网做的那样。一旦 Rust 成为 Linux 内核开发的标准,它也很可能发生在 C 和 C++ 中。

与其它替代语言相比,PHP 的崛起主要与 Wordpress 的首次出现和 PHP 在服务器领域的易卖性有关。特别是那些需要被编译成二进制的语言,即使这些替代语言有更多的特性或更好的性能,而 PHP 曾经两者都缺乏。正是因为 Wordpress 的崛起,媒体巨头们害怕自己的作品被“一个有博客的家伙”扼杀,于是接受了这一趋势,开始使用 Wordpress 来增强他们的互联网影响力。Wordpress 甚至为这些公司提供了 VIP 模式。

PHP 上的这种“硬锁”现在正在改变,这主要归功于云服务为其它编程语言提供了新平台,但即使到了今天,租到一台运行 PHP 的服务器并在一天内开始使用也不稀奇。事实是,今天也很容易租到一台运行 Node.JS 或 AWS Lambda 的服务器。你不需要多年的培训来使用一家云服务提供商,或者一个服务器服务,甚至谷歌也提供了一个使用谷歌云平台的教程。

尽管如此,PHP 仍然是能够支持网站开发的屈指可数的语言之一。随着越来越多的人参与进来,社区和官方都推出了工具:Opcache 用于 I/O 性能处罚、PDO 用于通用数据库层、Autoloader 用来使大型项目更易管理、Composer 用于依赖部署、PSR 用于标准化代码规范、PHPUnit 用于测试、PECL 用于扩展等等。

所以,回到概念上来,淡出意味着被取代。它的使用量不会增长,而是变得停滞不前。唯一可能发生的事情就是慢慢被其它解决方案取代。这不是发生在一夕之间,而是常年的积累。

从公司的角度来看,改变技术栈需要花费大量的资源,而没有立即的 ROI:迁移到新的技术栈不是没有代价的,更不是一天就完成的。更糟糕的是,有些工具可能不存在,比如分析、调试、甚至部署工具,这些都必须从头开始。

这使得很难说服老板进行“技术栈”迁移。这些老板,不是负责你的人,而是那些投资为了保持利润比上一时期更高的人。除非你能证明有一个新的“商业机会”,旧的技术栈无能为力,或者与其它新技术栈相比会相对性地赔钱,否则通常很难改变已经生效的一些东西。

4锤子是可靠的。射钉枪更好。

结合上下文,看看 W3Tech 对 PHP 的看法,你会发现 PHP 仍然因为被使用地最多而主导着因特网,但不是在 100% 的真实流量上,而是在头部网站上,包括非美国平台。换句话说,如果 Facebook 使用了一个 PHP 脚本,那并不意味着整个平台都是基于 PHP 的——以及会更多地在该公司上。

Wordpress 仍然是事实上被广泛使用的 CMS,与 WooCommerce 一起成为企业的首选。虽然也有 SaaS 提供相同的服务,但可能没有必要修复没有损坏的东西。

由 W3Techs.com 收集的网站使用的服务端编程语言的比例

以上说明:PHP 仍然是任何 web 项目都要考虑的工具。到目前为止,Wordpress 是 PHP 的巅峰之作。仍然有新的网站正在使用 PHP 创建。当 PHP 满足所有的复选框时,一两个人建立一个互联网公司仍然是完全正常的... 直到它不能满足所有条件。

今天有很多 web 技术可以使用:WebRTC、WebSockets、QUIC、HTTP/3、WebAssembly、WebAuthn、渐进式 Web 应用、机器学习、JSON Web 身份验证、gRPC 和服务端事件等等。这些技术支持了在线聊天系统、多媒体流、持续实时数据、新的身份验证机制等等。这些技术,PHP 都很难支持,甚至不可能支持;例如,很难支持流式那样传输大文件而不会阻塞自身,或者不可能支持 WebSockets。

Hack 只是大公司的未来,因为他们一开始就能烧钱运行 HHVM...

因为有很多工作要做,所以从一种语言过渡到多种语言,或者将服务推给向你提供所需功能的公司,比如让 Mux 处理视频平台,让 Pusher 处理事件传播,已经成为一种常态。有人可能说你是花钱图方便,但也有人会说你付钱是因为你的技术栈无法处理这些问题。

另一方面,你可以自己掌控所有东西。前端可以在 PHP 下工作,也可以是一个基于 JavaScript 或像 React、Angular 或 Vue 框架的单页应用(Single Page Application,SPA)。后端可以运行在基于 Rust、Go、F#、HHVM、.Net Core、Node.js 或者别的什么语言的应用上。因为 PHP 不能做所有事情,开发地狱就开始了,一致性会快速丧失。你开始从依赖一个生态系统到依赖非常多生态系统。

PHP 项目与其它 SaaS 或者基于 Node.js、Python、Go 或 Rust 编写的运行时结合在一起就不足为奇,添加另一个要维护的代码库或应用程序。这可能弊大于利,因为你必须为项目的每个部分处理两个(或更多)部署方案。

虽然有少数人能够处理所有事情,但向一个人提供合同的可能性非常小,主要是因为能处理所有事情的人很少,而且也不便宜。

5“但是这个伟大的公司使用 PHP”

我经常听到的一句话是“但是 Facebook 使用 PHP”,好像它是一种蓬勃发展的 Web 技术。以 PHP 起家的顶级公司已经明确表示,Hack 及 HHVM——“现代化 PHP 但消耗内存”——是公司的后续措施:

  • Facebook 迁移到 Hack/HHVM 并从 2014 年开始运行。

  • Wikipedia 也在 2014 年通过 HHVM 的支持抛弃了 PHP。

  • Etsy 也在 2015 年从 PHP 迁移到了 Hack。

  • Slack, 被 SalesForce 用 277 亿美元收购,也在 2020 年从 PHP 迁移到了 Hack。

注意,我强调了“企业后续措施”。Hack 就是未来?事实上,Hack 只是大公司的未来,因为他们一开始就有钱运行 HHVM,而且他们不想迁移 90% 的代码。剩下的非百万富翁公司只能使用 PHP 和廉价的服务器。

任何一家拥有大笔资金的公司都可以为自己的利益创造自己的语言,就像 Facebook、Apple、Google 和 Mozilla 那样,因为他们有人、有头脑去做,有服务去实现。无论好坏,我们只是附带的。

拥有一门内在需求稳定的语言可以让它进步,即使有时这意味着做出不太好的决定。

6它足够了,直到它不能

有时候说“你不能在 PHP 上做那件事”有点儿让人难过。新的 JIT 引擎很受欢迎,但它并不是将它与其它新兴语言相结合的灵丹妙药。性能过去是 PHP 的一个非常重要的问题,但现在它不是唯一的问题。互联网在发展,而 PHP 没有。

图片来源:Carl Heyerdahl on Unsplash

如今,网页只是起点。正在发生的 COVID-19 大流行表明,你需要系统针对不同数据类型的不断变化的状态做出反应。如今,PHP 还不够,当它足够的时候——看看最近的发展有多慢——开发人员将拥有更好的工具。没人会等着 PHP 实现自身的现代化,也没有企业会这样做。这就是所谓的进步:新工具取代老工具。

当你需要的不仅仅是显示一个具有基本交互的网页时,问题就出现了。就在那时,PHP 展示了其二十多年的历史,它是如何与当今的技术和产品需求脱节。

我肯定不是唯一一个等了足够时间让 PHP 成为一个像样的技术竞争对手的人。从业务逻辑的角度来看,PHP 非常方便,因为它的语法允许在专家手中非常有表现力的声明操作,特别是在“业务逻辑”部分,但它不是万能的。

PHP 是现在,但不是未来。

我认为这些段落表明 PHP 因为其本质而仍然是王者。没有哪一种语言在提供便利和成熟的同时获得如此大的吸引力,而不是功能——另外,就是 Wordpress 效应。

PHP 如何将被淘汰?每个人只需点击几下就可以创建它们自己的简介、商店、图片库、云存储、群聊等等;无需托管,无需服务器和代码。

我个人认为,现在,由于 SaaS 和一键安装的激增,我们已经超越了像 Wordpress 那样的“杀手级应用”。我们现在处于“杀手级生态系统”,一种语言已经描述了部分,而你带来自己的胶水。也许是 Node.js? 也许是 Go?也许是 Python?也许是 TypeScript 编译为二进制?也许是 Rust 的垃圾收集器?也许是一种全新的语言?

7也许是 PHP 9?

我看到一些人希望对 PHP 进行大的修改。除非 Rogue Wave(Perforce)内部有什么变化来推动 Zend 引擎在技术上向前发展,否则绝对不会。他们很可能是想要卖掉 Zend 服务器。我不认为他们是成功的,当你考虑到大公司尽快离开 PHP 的趋势,并使博客文章对每个人进行嘲讽。

并不是说 PHP 明天就会停止使用:它仍然工作,而且很容易掌握,因为总有一个 MVP 可以开始,它不需要花里胡哨的东西。只不过,PHP 是现在,而不是未来,负责这一点的人其实并不在乎。也许一旦一种新的语言出现,提供 PHP 和其它语言中最好的部分。Hack 刚刚证明了公司级 PHP 有很好的代码重用市场。

一旦下一个大事件席卷互联网,PHP 就来不及赶上了。

没有语言会完全死掉。PHP 没死,只是其它语言已经超越了它。当然,它们不像 PHP 那样经过战斗测试... 但他们正在实现。

当你认为人类对未知事物有固有的恐惧时,就会很容易同情那些被告知尝试另一种工具时的语言狂热者的愤怒。这适用于走出舒适区进入新事物,在本例中,这是从一种可靠的语言(如 PHP)迁移到更适合您需求的其它语言。没有人会因为仅仅“浪费”一周或一个月去学习和了解新的生态系统而死掉。最坏的情况是,你学会了不再去哪里,就像你选错了度假目的地。

通过多年的软件开发解决问题,我认识到,走向(而不是跑向)技术的地平线是工作的一部分,即使这意味着接受我们曾经热爱的东西走向命中注定...

... 未完待续。

作者介绍:
Italo Baeza Cabrera 平面设计师毕业。全栈 Web 开发者。退休的技术和游戏编辑。
原文链接:
PHP “dying” this Decade: One Year After
https://www.infoq.cn/article/hUV9vD24kfRRhzo5tFW1

点击文末【阅读原文】移步InfoQ官网,内容更多更精彩!

今日好文推荐

纵观20年间程序员薪酬变化:涨幅下降,初级编码岗大幅消失

腾讯技术Leader人均写3万行代码;拼多多超越阿里成为第一;360搜索、UC浏览器因虚假医药广告被点名下架 | Q资讯

缓存踩踏:Facebook 史上最严重的宕机事件分析

InfoQ 写作平台欢迎所有热爱技术、热爱创作、热爱分享的内容创作者入驻!

还有更多超值活动等你来!

扫描下方二维码

填写申请,成为作者

开启你的创作之路吧~

点个在看少个 bug 👇

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-09 17:10:02 HTTP/2.0 GET : https://f.mffb.com.cn/a/459320.html
  2. 运行时间 : 0.179058s [ 吞吐率:5.58req/s ] 内存消耗:4,733.32kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=290056f102d2f7db847aa1370590d261
  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.000902s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001512s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000723s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000613s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000890s ]
  6. SELECT * FROM `set` [ RunTime:0.000445s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001046s ]
  8. SELECT * FROM `article` WHERE `id` = 459320 LIMIT 1 [ RunTime:0.000871s ]
  9. UPDATE `article` SET `lasttime` = 1770628203 WHERE `id` = 459320 [ RunTime:0.001794s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.003532s ]
  11. SELECT * FROM `article` WHERE `id` < 459320 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001059s ]
  12. SELECT * FROM `article` WHERE `id` > 459320 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002543s ]
  13. SELECT * FROM `article` WHERE `id` < 459320 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005149s ]
  14. SELECT * FROM `article` WHERE `id` < 459320 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.010734s ]
  15. SELECT * FROM `article` WHERE `id` < 459320 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006401s ]
0.181929s