Javascript PHP vs JS:为什么PHP操作大部分是同步执行的,而JS操作不是?
如果我们研究一下PHP和JS框架的编写方式,你会发现它们有很大的不同。JavaScript通常对可能需要不确定时间的操作进行回调/承诺。尽管PHP可以将函数作为参数传递,但它并不常用 我想以数据库操作为例说明我的情况: PHP的雄辩:Javascript PHP vs JS:为什么PHP操作大部分是同步执行的,而JS操作不是?,javascript,php,asynchronous,Javascript,Php,Asynchronous,如果我们研究一下PHP和JS框架的编写方式,你会发现它们有很大的不同。JavaScript通常对可能需要不确定时间的操作进行回调/承诺。尽管PHP可以将函数作为参数传递,但它并不常用 我想以数据库操作为例说明我的情况: PHP的雄辩: Organization.findOne({where: {name: 'test'}}) .then(function (organization) { // Organization has been fetched here
Organization.findOne({where: {name: 'test'}})
.then(function (organization) {
// Organization has been fetched here
}
);
$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是单线程的?也许我有一个错误的认识,模式是否在两种语言中都实现了?可以编写blocking node.js代码,也可以编写异步PHP代码(请参阅libevent扩展、amhp项目或ReactPHP项目)。两者都不是真正的惯用语。这意味着它是非典型的,除了特殊的用例之外,可能不推荐使用它
PHP可以同步工作,因为在典型的Web服务器中,有许多PHP进程同时运行。每次处理1个HTTP请求
每种模式都有利弊。例如,如果您在node.js中执行CPU限制的工作,则很难在node.js中执行多个操作,而在PHP中,您可能需要更多的内存来实现更高的并发性,因为在PHP中,您通常可能在等待IO,因此大多数PHP进程可能最终都会等待。因此,您的CPU使用率很低,并且有很多PHP进程等待IO,而所有这些进程的内存中都有您最喜欢的web框架的副本
js允许构建某些类型的应用程序,这些应用程序在PHP中很难实现,因为没有共享内存空间。但话说回来,一旦node.js应用程序需要扩展到单个进程之外,这种优势就不再那么重要了
无论如何,这是一个非常广泛的问题。在某些方面,node.js和PHP都可以处理类似的用例,但是当您的用例变得更加奇特时,两者中的一个可能会更好
如果您主要是在构建一个web应用程序,那么您不会期望大规模的应用程序,您所追求的可能并不重要
因此,最终哪一个更好的选择取决于您的用例。我想,由于PHP用于通过HTTP输出HTML,因此没有使用异步内容,因为输出必须以完美的顺序。这意味着node.js无法以完美的顺序发出HTTP响应?