Node.js 与 PHP:理解服务器端开发

译文
开发 前端
了解 Node.js 和 PHP 这两种重要的服务器端软件开发语言,以确定哪一种最适合您的项目。

【51CTO.com快译】选择合适的语言、框架、库和数据库工具包是成功执行项目的第一步。虽然了解每个工具的优缺点是执行这种比较分析的合理途径,但如果前端和后端开发团队了解适当地工具,工作效率会大大很多。

服务器端开发对于设计基于web的功能性和流动性产品(网站、应用程序或原生web应用程序)至关重要。客户端开发涉及用户体验和信息的布局方式。服务器端开发负责高效组织和访问存储在数据库和 Web 应用程序中的数据,使用静态资源(如 CSS 和 JavaScript 或 HTML 模板)甚至数据进行访问。

因此,在为开发下一个项目时,了解服务器端开发的基本要求至关重要。

一、服务端开发的基本要求

1. 投入产出模型

无论使用何种语言、框架和库进行开发,基本流程或多或少都保持不变。使用的系统调用,始终与内核交互。

系统调用负责向内核提供请求,内核在设备级别执行这些请求。这种安排确保所有特定于设备的计算都在内核级别完成,并且应用程序不必处理过多的计算负载。

2. 阻塞与非阻塞调用

系统调用通常被确定为阻塞调用。“阻塞”是指内核等待返回结果或信息的时间。例如,内核可能会等待设备准备好进行计算,或等待访问某些设备数据等。这些挑战会导致阻塞调用,就意味着指令在几毫秒内不会执行完毕。

非阻塞调用对工程师来说更复杂,但可以节省关键的计算资源。对于这种安排,可以命令内核在必要的数据可用时发出警报,同时将请求放入队列中。其他可以立即执行的功能会立即执行。

3. 调度

如果正在创建一个全面的产品,在某些时候,线程和进程的数量将达到临界质量,将不得不为调度提供更多的考虑。用最简单的术语来说,调度是上下程序切换,允许一个线程接着一个线程或一个进程接着一个进程执行的步骤。

如果有太多的阻塞调用,那么在数千个线程和进程之间切换聚合所花费的时间可能会成为一个重要问题。这就是为什么尽可能使用非阻塞调用来确保异步处理的原因。

二、Node与 PHP:服务器端开发语言环境

Node.js 和 PHP 通常被认为是最适合服务器端软件开发的两种最理想的语言。本节将使用案例进行演示,以了解 Node.js 和 PHP 的配置文件。

Node.js

Node.js由 Ryan Dahl 开发并于 2009 年 5 月发布。它是一个开源运行时环境,从一开始就具有成本效益。Node.js支持异步开发,这意味着它利用非阻塞系统调用使开发过程资源充沛。使用 Node.js 的最显着优势之一是,由于只使用JavaScript,所以整个项目可以在开发时间线中仅使用一种语言。运行时还附带了几个Node.js 框架,用于添加功能。

PHP

PHP代表超文本预处理器。它于 1994 年由拉斯穆斯·勒多夫 (Rasmus Lerdorf) 发布。虽然与 Node.js 相比,它是一种较旧的语言,但 PHP 可用于整个项目的服务器端开发和其他开发过程。由于它可以与JavaScript、HTML、CSS 和纯文本一起使用,因此它在支持的底层语言方面的约束性较少。

市场趋势

应评估两种备选方案的受欢迎程度以了解:

• 人才的供应有助于项目的开发和维护。

• 与备选方案相关的社区和图书馆提供的支持。

• 可比项目中常用的替代方案。这些项目自完成上线以来,它们已经承担了迭代的成本。

此信息可用作评判标准,以决定对于 Web 开发公司来说,Node.js 和 PHP 之间哪个可能是更佳选择。

三、了解 Node.js 和 PHP 在服务器端开发中的对比

为了更好地构建 Node.js 和 PHP 之间的分析框架,应该查看并发性、可扩展性和性能等特定标准。Node.js 和 PHP 都易于安装,并随其框架或包管理系统一起提供。因此,比较安装过程在这里并不是最重要的。

1.并发性

并发性显示了服务器端语言或运行时高效执行多个线程和进程的效率。PHP 是一种同步语言,使用 I/O 块调用。虽然一些依赖于 PHP 的插件和工具具有异步执行,但是占比很少。虽然 PHP 库已经针对更快的性能和更少的计算资源消耗进行了优化,但不得不承认,由于是同步的原因,速度则会相对较慢。

Node.js 是一个异步环境。这意味着当系统调用到达内核时,查询被解析。所有需要更多数据、文件或系统访问权限的调用都会排队并稍后执行,而不会妨碍其他可以完成的功能。这是对异步环境的简单解释,但它仍然准确地说明了该现象的核心含义。

2. 可扩展性

可扩展性表明了随着项目功能和数据数量以及用户数量方面的增长,服务器端脚本语言或运行时环境可以跨多个系统、核心和服务器进行扩展。


大多数主要的内容管理系统(如 WordPress 和 Joomla)都支持 PHP。这使得缩放过程相对更简单。另一方面,Node.j在跨系统扩展时需要付出相对更多的努力。

3. 性能

Node.js 是一个性能更好的运行时环境,因为它是异步的,但 ReactPHP 可以填补 PHP 和 Node.js 之间的性能差距。
根据经验,与 Node.js 相比,PHP 每秒只能执行 50% 的查询。

4. 使用 PHP 或 Node.js 的理想场景

如果项目需要速度或实时数据流,Node.js 将是两种服务器端语言之间的首选选项。对于想要在整个堆栈中使用 JavaScript 的团队来说,Node.js 也是一个很好的替代方案。

当希望项目具有可移植性时,PHP 是理想的选择。当已拥有集中式服务器基础架构时,它也是一个不错的选择。

四、对比分析

Node.js PHP
  • 开源运行时环境
  • 开源服务器端语言
  • 在 JavaScript 上运行
  • 在 JavaScript、HTML、CSS 和纯文本上运行
  • 被全球 189,000 个网站使用
  • 全球超过 500 万个网站使用 
  • 异步调用执行可以提高效率
  • 通常,同步调用执行会导致更多的资源消耗
  • 难以扩展
  • 在 WordPerss 和 Joomla 的帮助下,可扩展性非常强
  • 估计每秒请求数:3,614
  • 估计每秒请求数:1,773
  • 非常适合需要速度、实时数据流以及希望在整个开发阶段使用 JavaScript 的项目
  • 非常适合于必须具有可移植且使用集中式服务器基础架构开发的项目 

五、总结

Node.js 开发公司可能更喜欢运行时环境,而那些精通 PHP 的公司则更喜欢服务器端脚本语言。使用更客观的方法,可以看出项目的理想语言或运行时环境将取决于项目的目的和约束。双方都有大公司——Facebook、维基百科、Slack、MailChimp 和 WordPress 使用 PHP,而 Netflix、LinkedIn、PayPal 和 NASA 使用 Node.js。 

因此,您不应该比较哪种服务器端JavaScript语言总体上是好的,而应该尝试检查这两种语言中的哪一种适合您的特定项目、目标和约束

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:梁菲 来源: DZone
相关推荐

2011-07-26 11:07:08

JavaScript

2011-09-08 10:21:50

Node.js

2021-05-26 09:00:00

Node.js开发模块

2020-10-12 08:06:28

HTTP 服务器证书

2013-11-01 09:34:56

Node.js技术

2010-10-15 08:57:15

PHP多进程

2018-07-09 10:01:56

2019-02-15 10:49:37

Node.jsweb服务器

2018-04-22 00:01:43

JavaScript Node 语言

2011-06-07 16:01:46

Android 服务器 数据交互

2018-03-15 09:54:45

php服务器端语言

2011-10-19 14:38:46

Node.js

2019-01-22 15:28:04

Javascriptvue.jsnuxt.js

2015-03-10 10:59:18

Node.js开发指南基础介绍

2010-09-08 14:03:39

ZendPHP许可选择

2011-06-17 10:29:04

Nodejavascript

2022-06-05 13:52:32

Node.jsDNS 的原理DNS 服务器

2010-03-23 10:04:00

JavaScript

2014-01-15 10:06:30

vFlash

2012-10-15 13:40:15

IBMdw
点赞
收藏

51CTO技术栈公众号