nodejs学习笔记_nodejs和PHP在基础架构上的差别--共享状态的并发

本文探讨了Node.js和PHP在并发处理上的区别。Node.js通过单个长期运行的进程实现共享状态并发,而PHP则为每个请求生成新的线程。通过示例代码展示这两种方式如何影响变量$i的状态维护,进而揭示它们在处理高并发请求时的不同表现。

绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明确node内部做出的权衡,以及node应用性能好的原因。

node 为javascript引入了一个复杂的概念,:共享状态的并发。


node採用一个长期执行的进程

而php在apache中会产生多个进程

例如以下图所看到的:

代码验证:

PHP:

<?php
$i = 0;
$i++;
echo $i

nodejs:

var http = require('http');
var i=0;
http.createServer(function() {
     i++
     console.log(i)     
}).listen(3000,'127.0.0.1');

当使用浏览器请求这两个地址的时候
PHP会一直输出 1
Node.js会输出 1 2 3 4 5 6 ...
通过图片,能够看出php运行完程序以后,下次运行会又一次申请一个新的线程。变量每次运行都会申请内存,赋值为0,加1,因此输出都是1
而nodejs会一直维持一个长期执行的进程,变量i在内存中一直存在,每次执行都会加一,因此会出现1 2 3 4 5 6 ...

apache产生的新的线程每次都会刷新状态,$i会被又一次赋值,
node则不会,每次都会给$i加1
因此,node中,须要对回调函数改动内存中的变量的时候要特别小心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值