后端开发圈有个争论持续了十多年:PHP还是Node.js?哪个更快?哪个更有未来?
我花了数周时间搭建相同环境,跑真实基准测试,用两者构建小型但具代表性的应用,还翻阅了大量文档、社区数据和开发者调研。我带着预设进去,大部分都错了。
这不是站队文章。我对两边都没忠诚度。这是我实际发现的。
PHP和Node.js在纸面上不像直接竞争对手。PHP是一门自带运行时的语言,Node.js是一个JavaScript运行时。但实践中,两者都用于构建Web后端、API和服务器渲染应用——这就是它们始终被放在一起比较的原因。
它们为Web的不同时代而生,由不同的人创建,哲学也不同。理解这个背景,才能正确解读基准测试。
Rasmus Lerdorf最初没想创造编程语言。他用C写了一套通用网关接口(CGI)二进制程序,用来追踪自己在线简历的访问量。他称之为"Personal Home Page Tools"——这就是PHP的由来。
这门语言有机生长。它被扩展、被贡献,最终成为部署最广泛的服务器端语言之一——不是靠赢得什么技术竞赛,而是因为它可用、易学、能干活,在那个Web爆发、开发者急需能用的东西的时代。
它的模型很简单:用户发起请求,PHP执行脚本,脚本与数据库交互,返回响应。新请求,新执行。无状态、可预测、广泛理解。
批评是后来的事。函数命名没有标准化,错误处理不一致,全局状态模型在规模扩大时出问题。口碑受损。
但PHP没有停滞。PHP 7的速度比PHP 5快了近一倍,PHP 8.0引入JIT编译,PHP 8.3和8.4持续大幅收紧语言特性。2026年的PHP,和大多数批评者记忆中的已大不相同。
Ryan Dahl在2009年JSConf EU上介绍Node.js,开场就是批评Apache处理并发连接的方式。他的论点很直接:传统服务器为每个连接 spawn 新线程,线程昂贵,阻塞I/O让问题更糟。
Node.js基于Google的V8引擎和非阻塞、事件驱动的I/O模型。不用等数据库查询返回才能做别的事,Node.js可以注册回调然后继续——在单线程上处理数千并发连接,没有线程管理开销。
它出现的时机恰到好处。JavaScript已经无处不在。开发者突然可以用同一门语言写前后端,JSON成为数据交换格式,实时应用兴起。Node.js不是渐进改进,而是范式转变。
热门跟贴