Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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
Javascript PHP vs JS:为什么PHP操作大部分是同步执行的,而JS操作不是?_Javascript_Php_Asynchronous - Fatal编程技术网

Javascript PHP vs JS:为什么PHP操作大部分是同步执行的,而JS操作不是?

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

如果我们研究一下PHP和JS框架的编写方式,你会发现它们有很大的不同。JavaScript通常对可能需要不确定时间的操作进行回调/承诺。尽管PHP可以将函数作为参数传递,但它并不常用

我想以数据库操作为例说明我的情况:

PHP的雄辩:

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响应?