美文网首页
理解PHP与Node的IO处理机制

理解PHP与Node的IO处理机制

作者: 羽霖z | 来源:发表于2018-10-11 22:54 被阅读0次

以下分析了php和node如何处理一个以及多个Http请求以及代码中的IO操作处理机制。

PHP的实现:
基本流程:
web服务器接受到请求之后,转发给一个php解释器进程,进程执行完代码并将输出结果返回给web服务器,web服务器返回给发起http请求的客户端。
多个请求时:
php-fpm : 主进程接受请求分配给worker进程处理,如果当前的worker进程都在执行中,则适当的开辟新的进程的处理。但是同一时刻,每个进程只能处理一个请求,当多个请求同时到达时,则必须开辟多个进程才能处理,否则只能挨个排队等待。由于不断开辟进程十分消耗系统资源,也很容易到达上限,所以单机情况下这种模式很难抗住大量的并发。这种多进程模型的优点是:当某个进程发生意外过执行时间过长时,不会阻塞住整个请求处理系统。
代码中出现IO调用时,如请求数据库或者请一个远程文件,php会一直等待请求结果或者超时,代码才能接着向下运行,当然,借助一些扩展,也可以实现非阻塞的事件回调机制。

Node的实现:
Node自己实现了Web服务器的功能,监听服务器端口等待连接,可以接受很多请求,就像nginx那样。当前连接成功并分析完这个请求后,接下来就是要处理该做什么了。假设每次请求要做一些数据的计算,同时接听到100次请求,那这100次运算在时间线上是排队处理的,因为只有一个node主进程在做这件事。但是请求中以IO操作为主时,比如每次请求的任务是到某个网页爬取这个网页的所有图片,那这100个请求会很快全部发出抓取远程图片的指令。
如果是阻塞式IO,则当前进程内一个请求拿到结果后才能发起下一个请求。Node的IO操作是异步的,IO操作没有拿到结果的时候不会阻塞住当前线程,所以可以发起很多IO请求。如果把IO操作当做攻城的话,就像战场上的统帅,同时向多个将军发出攻城的指令,然后将军们各自到自己的路线攻城就可以了。如何有哪路军队作战完成,就会汇报给将军,然后执行异步的处理。 (阻塞式:向1路军发送攻打A城的指令,1路军打完了,再向2路军发送攻打B城的指令...)
Node通过其事件引擎libuv实现了线程池来完成真正的异步IO操作。(不要和多路复用IO的概念混淆,epoll本质并非异步)

相关文章

  • 理解PHP与Node的IO处理机制

    以下分析了php和node如何处理一个以及多个Http请求以及代码中的IO操作处理机制。 PHP的实现:基本流程:...

  • node事件机制

    什么是node事件机制 node都说是事件驱动的IO,那到底什么是node中的事件机制呢 在node事件机制,需要...

  • 深入理解PHP之:Nginx 与 FPM 的工作机制

    深入理解PHP之:Nginx 与 FPM 的工作机制

  • PHP小知识点

    深入理解 PHP 之:Nginx 与 FPM 的工作机制 这篇文章从 Nginx 与 FPM 的工作机制出发,探讨...

  • 彻底理解PHP的SESSION机制

    原文地址: 彻底理解PHP的SESSION机制一、默认机制,用磁盘文件来实现PHP会话。php.ini配置:ses...

  • (002)java中的NIO

    简介 从JDK1.4开始,java中提供一个种叫NIO(Non-Blocking IO)的IO处理机制。与以往的标...

  • 深入理解PHP之:Nginx与FPM的工作机制

    深入理解PHP之:Nginx与FPM的工作机制 理解了基本的配置Nginx+FPM,要善于从Nginx与FPM的工...

  • 初识node

    Node 基础 浏览器工作原理(Node优势):事件驱动(事件轮询)和非阻塞IO处理(异步IO)传统服务器是同步I...

  • Node玩转多进程

    Node带来的优势与需要解决的地方 Node的优势,擅长处理IO密集型应用,不要关心多线程带来的开辟内存的开销及上...

  • node基础

    node做中间层的优势 1.性能(比php,java快一点)2.异步IO,高并发3.处理数据4.中间多一层,安全一...

网友评论

      本文标题:理解PHP与Node的IO处理机制

      本文链接:https://www.haomeiwen.com/subject/wgdiaftx.html