Node.js服务器和PHP服务器的差异与理论混淆

时间:2016-03-12 14:17:16

标签: javascript php jquery node.js server

我已经能够在node.js和php中编写应用程序一段时间了,但只是真的发现了一个奇怪的区别,我觉得我还是不完全理解。

我认为我注意到的差异是假设我们必须访问由php运行的Web应用程序的客户端,他们将在后端(变量数组等)上有两个完全不同的所有数据实例。在node.js中,它们并不完全。

这是我尝试的一项测试,可以省去一些困惑:

PHP测试

frontend js

$.post("/ajax.php", {test:"test"}, function(result){
    console.log(result);
});

ajax.php

$testarr = array();

if(isset($_POST['test'])){
    $testarr[] = $_POST['test'];
    print_r($testarr);
}

...在此示例中,如果我在两个不同的浏览器中访问应用程序,或者甚至在同一客户端中访问该应用程序,前端控制台将始终输出一个包含单个元素的数组。因此阵列基本上重置了刷新/新请求。

Node.js test

frontend js

$.post("/test", {test:"test"}, function(result){
    console.log(result);
});

app.js

var testarr = [];
app.post("/test", function(req, res){
    testarr.push(req.body.test);
    console.log(testarr);
});

然而,在这里,当我甚至从不同的浏览器刷新页面时,数组不会重置,我最终会在每个请求上使用[“test”,“test”,“test”等]。两个不同浏览器的两个不同客户端如何访问同一个数组?通常数据必须通过数据库,特殊请求等共享吗?

我显然误解了node.js的一些重要哲学,我很感激任何人都有一个很好的解释。

2 个答案:

答案 0 :(得分:1)

区别在于PHP为每个请求创建了一个新环境,而node.js却没有。

答案 1 :(得分:-1)

我不是最大的PHP游戏,但我认为你会覆盖你的PHP数组而不是推送新元素。你可以使用array_push()向你的testarr添加一些内容。