Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与php/ruby/etc+nginx相比,使用node.js+node http服务器有什么优势?_Php_Javascript_Node.js_Nginx - Fatal编程技术网

与php/ruby/etc+nginx相比,使用node.js+node http服务器有什么优势?

与php/ruby/etc+nginx相比,使用node.js+node http服务器有什么优势?,php,javascript,node.js,nginx,Php,Javascript,Node.js,Nginx,我看到很多文档都说node.js http server的主要优点是事件io架构,但Nginx也有事件io,那么在Nginx中使用node.js+node http server优于php或其他语言有什么好处呢?php是阻塞的,而node.js不是。nginx是否具有与node.js几乎相同的体系结构并不重要,因为PHP仍然处于阻塞状态。PHP正在阻塞,而node.js没有。nginx是否具有与node.js几乎相同的体系结构并不重要,因为PHP仍然是阻塞的。如果一个组件是非阻塞的,这是不够的。

我看到很多文档都说node.js http server的主要优点是事件io架构,但Nginx也有事件io,那么在Nginx中使用node.js+node http server优于php或其他语言有什么好处呢?

php是阻塞的,而node.js不是。nginx是否具有与node.js几乎相同的体系结构并不重要,因为PHP仍然处于阻塞状态。

PHP正在阻塞,而node.js没有。nginx是否具有与node.js几乎相同的体系结构并不重要,因为PHP仍然是阻塞的。

如果一个组件是非阻塞的,这是不够的。所有这些都必须是为了使整个事情不被阻塞。如果只有一件事会阻碍,那么一切都会阻碍

即使在Node.JS中,您的应用程序也可能仍然被阻塞,即使Node.JS本身不是:如果您出于任何原因阻塞文件系统或数据库访问,它仍然会被阻塞


正如PS:如果有东西阻塞了,并不意味着它是坏的。因此,这不是支持或反对Node.JS的论点。对于某些情况,您确实需要非阻塞应用程序,您应该使用Node.JS,但对于大多数应用程序,由于更大的社区支持和集成,PHP是更好的选择。

如果一个组件是非阻塞的,这是不够的。所有这些都必须是为了使整个事情不被阻塞。如果只有一件事会阻碍,那么一切都会阻碍

即使在Node.JS中,您的应用程序也可能仍然被阻塞,即使Node.JS本身不是:如果您出于任何原因阻塞文件系统或数据库访问,它仍然会被阻塞


正如PS:如果有东西阻塞了,并不意味着它是坏的。因此,这不是支持或反对Node.JS的论点。对于某些情况,您确实需要非阻塞应用程序,您应该使用Node.JS,但对于大多数应用程序,PHP是更好的选择,因为它提供了更大的社区支持和集成。

取决于您的应用程序:

关于node js的简短视频:

一些让事情变得更好的事情:

它使用javascript,有助于在服务器端和客户端之间更好地重用代码


节点Js本身是非阻塞的。

取决于您的应用程序:

关于node js的简短视频:

一些让事情变得更好的事情:

它使用javascript,有助于在服务器端和客户端之间更好地重用代码


Node Js本身是非阻塞的。

任何答案的核心都应该是这样一句话:“这取决于你想做什么”。。例如,你可能试图

在聊天室中支持10k并发客户端 每月提供100万个静态页面 为3k用户提供类似CMS的功能 提供一个简单的博客类型的网站,供小型企业使用 支持具有数百万用户的重写系统,如游戏 建立一个消费者银行网站 等 人们普遍认为,应该选择正确的技术来解决手头的问题——任何关于将一种技术与另一种技术相结合的优点的讨论,无论它们是否固有地处理事件IO,在任何决策过程中都将是有限的价值

在您的技术堆栈的决策过程中,另一个非常有影响力的因素是可用于实现项目目标的技能和经验

然而

在使用了您提到的所有技术之后,我将向您介绍一些我们认为已解决的问题以及选择某些配置的原因:

PHP+Nginx

是的,PHP是阻塞的,但这并不妨碍Facebook和其他使用它作为核心web应用程序语言的人。在更传统的LAMP堆栈中,A是Apache,您有一个众所周知且长期存在的问题,该问题可能会在高流量条件下出现,您可能已经在入站到Apache的web请求和到数据库的连接之间创建了1对1的关联。如果您需要为1000多个并发客户端提供服务,并且您的数据库有1000个连接限制,那么我预计您将遇到困难

这种资源匮乏为用户在过载条件下创造了一种破坏性的体验

在这种情况下,Nginx可以为您带来更多好处,因为事件IO de耦合了web请求和出站PHP数据库连接之间的相关性。有大量的文献证实了这一点。请记住,这不是靠魔法实现的——这取决于您如何配置NGinx和PHP——您可以通过启用默认值轻松地挂起自己

假设经过深思熟虑的配置到位,NGinx的事件IO具有缓冲请求的净效果,以数据库能够处理的速率将请求分发给PHP

PHP应用程序广泛使用Memcached等缓存,以进一步支持高读系统中的高容量

Node.js纯HTTP

我们为productio选择Node.js的原因 n它支持的解决方案是

它不是关键任务节点。js是新的,因此您不想在它上运行银行系统 我们想要轻一点的 我们想要学习和实验——通常在许多业务系统中不允许使用这个标准 Node的新颖性和它的事件IO编程概念的微妙性意味着我们打破了很多次,并且我们花了比坚持使用PHP更长的时间来得到最终的解决方案

web应用程序的框架还处于初级阶段

Express.js Socketstream Backbone.js 也许其他人。。。 考虑到他们都很年轻,他们仍在进行很多工作。这取决于你在项目中努力实现的目标,它们可能会很好地为你服务,也可能会消耗你学习它们的时间和精力

例如,在Express.js中,处理HTTP缓存头、内容的GZIPing等简单的事情并不完全是标准的,因此如果这类事情是必要的,那么您必须开始定制解决方案或到其他地方寻找

与NGinx或Apache不同,Node.js安装或使用它构建的应用程序没有任何本机功能可以确保它在运行级别启动。这意味着您必须找到一些解决方案,以便在重新启动时管理应用程序autostart,以及使用Node.js之外的其他方法进行其他恢复。我们使用Monit

Node.js+NGinx


当然,为什么不。。NGinx更为成熟,因此我们需要在将SSL连接扩展到Node.js之前终止它们,这就是我们所做的。另外的好处是,现在NGinx可以通过GZIP传递内容

任何答案的核心都应该是“这取决于你想做什么”。。例如,你可能试图

在聊天室中支持10k并发客户端 每月提供100万个静态页面 为3k用户提供类似CMS的功能 提供一个简单的博客类型的网站,供小型企业使用 支持具有数百万用户的重写系统,如游戏 建立一个消费者银行网站 等 人们普遍认为,应该选择正确的技术来解决手头的问题——任何关于将一种技术与另一种技术相结合的优点的讨论,无论它们是否固有地处理事件IO,在任何决策过程中都将是有限的价值

在您的技术堆栈的决策过程中,另一个非常有影响力的因素是可用于实现项目目标的技能和经验

然而

在使用了您提到的所有技术之后,我将向您介绍一些我们认为已解决的问题以及选择某些配置的原因:

PHP+Nginx

是的,PHP是阻塞的,但这并不妨碍Facebook和其他使用它作为核心web应用程序语言的人。在更传统的LAMP堆栈中,A是Apache,您有一个众所周知且长期存在的问题,该问题可能会在高流量条件下出现,您可能已经在入站到Apache的web请求和到数据库的连接之间创建了1对1的关联。如果您需要为1000多个并发客户端提供服务,并且您的数据库有1000个连接限制,那么我预计您将遇到困难

这种资源匮乏为用户在过载条件下创造了一种破坏性的体验

在这种情况下,Nginx可以为您带来更多好处,因为事件IO de耦合了web请求和出站PHP数据库连接之间的相关性。有大量的文献证实了这一点。请记住,这不是靠魔法实现的——这取决于您如何配置NGinx和PHP——您可以通过启用默认值轻松地挂起自己

假设经过深思熟虑的配置到位,NGinx的事件IO具有缓冲请求的净效果,以数据库能够处理的速率将请求分发给PHP

PHP应用程序广泛使用Memcached等缓存,以进一步支持高读系统中的高容量

Node.js纯HTTP

我们选择Node.js作为其支持的生产解决方案的原因如下

它不是关键任务节点。js是新的,因此您不想在它上运行银行系统 我们想要轻一点的 我们想要学习和实验——通常在许多业务系统中不允许使用这个标准 Node的新颖性和它的事件IO编程概念的微妙性意味着我们打破了很多次,并且我们花了比坚持使用PHP更长的时间来得到最终的解决方案

web应用程序的框架还处于初级阶段

Express.js Socketstream Backbone.js 也许其他人。。。 考虑到他们都很年轻,他们仍在进行很多工作。这取决于你在项目中努力实现的目标,它们可能会很好地为你服务,也可能会消耗你学习它们的时间和精力

例如 例如,在Express.js中,处理HTTP缓存头、内容的GZIPing等简单的事情并不完全是标准的,因此如果这类事情是必要的,那么您必须开始定制解决方案或到其他地方寻找

与NGinx或Apache不同,Node.js安装或使用它构建的应用程序没有任何本机功能可以确保它在运行级别启动。这意味着您必须找到一些解决方案,以便在重新启动时管理应用程序autostart,以及使用Node.js之外的其他方法进行其他恢复。我们使用Monit

Node.js+NGinx


当然,为什么不。。NGinx更为成熟,因此我们需要在将SSL连接扩展到Node.js之前终止它们,这就是我们所做的。另外的好处是,现在NGinx可以通过GZIP传递内容

你是在问一种编程语言相对于另一种编程语言的优势是什么?相关:你是在问一种编程语言相对于另一种编程语言的优势是什么?相关:PHP是更好的选择,但你必须接触PHP:。我会在node中进行所有web开发。PHP是更好的选择,但您必须接触PHP:。我会在node中进行所有的web开发,我不会说express还处于初级阶段。其余的都是,谢谢!这对我帮助很大!我不会说express还处于起步阶段。其余的都是,谢谢!这对我帮助很大!