如果我们研究一下PHP和JS框架的编写方式,就会发现有很大的不同。JavaScript通常会对可能需要一定时间的操作进行回调/承诺。尽管PHP可以将函数作为参数传递,但它并不常用。
我想以数据库操作为例来说明我的情况:
PHP的雄辩力:
$organization = Organization::where('name', '=', 'test')->first();
Node.JS续写:
Organization.findOne({where: {name: 'test'}})
.then(function (organization) {
// Organization has been fetched here
}
);正如您所看到的,Sequelize使用承诺来实现操作异步。然而,PHP的口才却并非如此。
除了框架基准,这是否意味着Node.JS更快/更高效,因为它没有阻塞?还是因为JS是单线程的?也许我有一个错误的认识,这种模式是否在两种语言中都得到了同样的实现?
发布于 2018-01-30 08:31:55
可以编写阻塞的node.js代码,也可以编写异步PHP代码(请参阅libevent扩展、amphp项目或ReactPHP项目)。两者都不是真正的习语。这意味着它是不典型的,也许不推荐,除非是专门的用例。
PHP可以同步工作,因为在典型的the服务器中,有许多PHP进程同时运行。每次处理一个HTTP请求。
每种型号都有优缺点。例如,如果您正在执行node.js绑定的工作,那么在PHP中做多件事情会更加困难,而在PHP中,您可能需要更多的内存使用以获得更高的并发性,因为通常您可能会在PHP中等待IO,所以大多数PHP进程可能最终会等待。因此,您的CPU使用率最终很低,您有大量PHP进程等待IO,而所有这些进程都在内存中复制您最喜欢的web框架。
Node.js允许构建某些类型的应用程序,这些应用程序在PHP中很难实现,因为没有共享内存空间。但是,如果您的node.js应用程序需要超越单个进程,那么这种优势最终可能会变得不那么重要。
总之,这是一个非常宽泛的问题。在某些方面,node.js和PHP都可以处理类似的用例,但是当用例变得更有异国情调时,两种用例中的一种可能更好。
如果你主要是一个构建web应用程序的人,你不会期望大规模的网络应用程序,那么你所追求的可能并不重要。
因此,最终哪个是更好的选择取决于您的用例。
https://stackoverflow.com/questions/48516796
复制相似问题