簡體   English   中英

Node.js服務器和PHP服務器的差異與理論混淆

[英]Confusion with theory between the differences of Node.js servers and PHP servers

我已經能夠用node.js和php編寫應用程序已有一段時間了,但是我才真正發現了一個奇怪的區別,我覺得我仍然不完全了解。

我認為我注意到的差異是假設我們必須訪問由php運行的Web應用程序的客戶端,它們將在后端(變量數組等)上有兩個完全不同的所有數據實例。 就像在node.js中一樣,它們並不完全相同。

這是我為避免混淆而做的測試:

PHP測試

前端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測試

前端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的一些大哲學,希望有一個很好的解釋的人,我將不勝感激。

區別在於,PHP為每個請求創建了一個新環境,而node.js沒有。

我不是最大的PHP專家,但是我認為您可以覆蓋PHP數組,而不是添加新元素。您可以使用array_push()將某些內容添加到測試人員中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM