>  기사  >  백엔드 개발  >  nodejs学习笔记_nodejs和PHP在基础架构上的区别共享状态的并发

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

WBOY
WBOY원래의
2016-06-23 13:57:35905검색

绝大多数对于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中,需要对回调函数修改内存中的变量的时候要特别小心。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.