【问题标题】:Node.js run as program vs phpNode.js 作为程序运行 vs php
【发布时间】:2025-12-12 02:30:01
【问题描述】:

我一直在研究 node.js 应用程序与 php,我发现很多比较这两种服务器技术的比较。大多数人认为javascript V8引擎在单个文件计算的运行速度方面比php快得多。

我为 Node.js 编写了一些 javascript 代码,现在我有了这个想法,我不知道它是否正确。

在我看来,Node.js 运行一个 javascript 应用程序并监听一个端口。所以这个 javascript 应用程序是在服务器计算机上运行的应用程序。因此,应用程序代码全部复制到计算机的内存中。当 node.js 执行这个程序时,像全局变量这样的东西在开始时被声明和保存。所以任何新的请求进来,服务器都可以非常有效地使用这些变量。

然而,在 php 中,php 程序会根据请求执行 *.php 文件。因此,如果某个请求是针对 www.xx.com/index.php 的,那么程序会执行 index.php,其中可能会有类似

的内容
require("globalVariables.php");

然后,php.exe 会去那里并再次声明这些变量。函数和其他对象的想法相同...

那么当有许多其他库需要包含时,我认为 php 可能不是一个好主意是正确的吗?

我搜索了比较,但没有人谈论这个。

谢谢

【问题讨论】:

  • node.js 是最基本的套接字服务器,因此使用它就像编写自己的网络服务器,而 php 是在网络服务器上编写页面。这不是 90 年代。任何可以处理 PHP 性能的 PC 都可以处理 node.js,反之亦然。所有现代 PC 都可以。
  • 我同意大多数 PC 可以同时运行 php 和 nodejs。我不太关心记忆之类的,我只是有一个想法,我不知道它是否正确。假设您运行一个程序,其中包含需要声明的一百万个全局变量(是的,我知道这不太可能)。 php会慢很多吗?

标签: php node.js caching memory comparison


【解决方案1】:

你在比较不同的东西。 PHP 依赖 Apache 或 nginx(例如)来提供脚本,而 Node.js 本身就是一个完整的服务器。

这是一个很大的区别,因为当你加载一个 php 页面时,Apache 会产生一个线程并在那里运行脚本。在 Node 中,所有请求都由 Node.js 唯一的线程提供服务。

所以,php 和 Node.js 是不同的东西,但考虑到您的担忧:是的,您可以在 Node 中维护一个全局上下文,该上下文将一直加载到内存中。另一方面,PHP 一直在加载、运行和退出。但这不是典型的用例,Node.js Web 应用程序有模板,必须加载和解析,数据库调用,文件......真正的区别在于 Node.js 处理繁重任务的方式:单线程 用于 javascript,一个 事件队列,以及用于文件系统、网络和所有慢的东西的外部线程。传统服务器为每个连接生成线程,这是一种非常不同的方法。

【讨论】: