色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php nodejs性能

呂致盈1年前7瀏覽0評論

PHP和Node.js分別是服務器端編程語言和JavaScript運行環境,二者在網絡應用程序中具有重要的地位。性能作為語言的核心指標,對于單頁應用或web應用的響應時間和服務器的負載承受能力影響深遠。本文將會重點關注PHP和Node.js的性能, 并用實例說明其差異所在。

PHP在處理常規網站后端業務的時候,例如查詢、插入數據等一些中低負載的業務變化下,PHP的響應時間比Node.js的響應時間好得多。而在處理高負載的業務時,Node.js顯然比PHP表現更出色。

一段簡單的PHP代碼:
public function getArticleList(){
$result = $this->db->query('SELECT * FROM article');
return $result->fetch_all(MYSQLI_ASSOC);
}
一段簡單的Node.js代碼:
async function getArticleList() {
let result = await db.query('SELECT * FROM article');
return result;
}

兩份代碼實現的是同一件事——從數據庫中獲取文章列表。我們假設數據庫中有1千條文章數據,使用PHP和MySQL解析一次需要60ms左右;使用Node.js和MySQL解析一次只需要13ms左右。確實相差不小。

對于應用程序的狀態保留,PHP很難完成,并且需要使用不同的技術才能實現。相比之下,Node.js有一個優秀的文件系統API可以用于存儲和管理應用程序的狀態。這意味著,對于需要保留開放式連接的應用程序,Node.js將遠遠優于PHP。比如在線聊天室。PHP將每個請求視為獨立的請求,而不理會任何之前的狀態。

PHP寫的一個簡單的websocket服務器:
class WebSocketServer{
private $sockets = [];
public function __construct($host, $port){
$master=socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() failed");
socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1) or die("socket_option() failed");
socket_bind($master, $host, $port) or die("socket_bind() failed");
socket_listen($master, 20) or die("socket_listen() failed");
$this->sockets[] = $master;
while (true){
$read = $this->sockets;
if (socket_select($read,$write=NULL,$except=NULL,0)< 1){
continue;
}
if (in_array($master, $read)) {
$client = socket_accept($master);
if ($client){
array_push($this->sockets, $client); //將連接添加到sockets中
}
unset($read[ array_search($master, $read) ]);
}
foreach ($read as $socket){
$bytes = @socket_recv($socket, $buffer, 2048, 0);
if ($bytes< 9){ //bytes長度為9,為握手,也是websocket的驗證
$this->close_sock($socket);
continue;
}
$msg = $this->_decode($buffer); //獲取數據
array_push($this->everReadData, $msg); //把說話內容添加到數組everReadData中
if (is_callable($this->callback)){ //執行回調函數, $msg就是發送的消息
call_user_func( $this->callback, $this, $socket, $msg );  //回調函數就是自定義的處理函數    
}                
}
}
}
}
Node.js寫的websocket服務:
let WebSocket = require('ws')
let wss = new WebSocket.Server({ port: 8080 })
wss.on('connection', function connection(ws, req) {
ws.on('message', function incoming(message) {
wss.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
});
});

Node.js不但更加簡單靈活而且支持websocket。使用Node.js可以非常簡單地實現一個websocket聊天室,而PHP很難做到這一點。

綜上所述,PHP在簡單面向對象的代碼實現中可以比Node.js更高效,但當高并發情況下Node.js的表現要更出色。同時,Node.js在底層控制和網絡開放連接方面表現更好,更適合于構建節點重的應用程序,例如聊天室和游戲,而PHP則更適合于簡單的網站后臺業務。