用了那么多 LNMP, 你真的了解 N 与 P 交互吗?

栏目: PHP · Nginx · 发布时间: 6年前

内容简介:用了那么多 LNMP, 你真的了解 N 与 P 交互吗?

定义CGI,FastCGI,PHP-FPM

  1. 什么是CGI?

    CGI是一种通用网关协议。为了解决不同的语言解释器(如 phppython 解释器)与WebServer的通信而产生的一种协议。只要遵守这种协议就能实现语言与WebServer通讯。CGI是规定了要传什么数据/以什么格式传输给php解析器的协议。

  2. 什么是FastCGI?

    是一种对CGI协议升华的一种协议。FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。。

  3. 什么是PHP-FPM?

    (PHP FastCGI Process Manager),PHP-FPM是一个实现了Fastcgi协议的程序,用来管理Fastcgi起的进程的,即能够调度php-cgi进程的程序。并提供了进程管理的功能。进程包含 master 进程和 worker 进程两种进程。master进程只有一个,负责监听端口(默认9000),接收来自 WebServer的请求,而 worker 进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是PHP代码真正执行的地方。

  4. FastCGI好在哪里?

    Fastcgi则会先fork一个master,解析配置文件,初始化执行环境,然后再fork多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是Fastcgi的对进程的管理。大多数Fastcgi实现都会维护一个进程池。注:swoole作为httpserver,实际上也是类似这样的工作方式。

Nginx 与 PHP 交互过程

用了那么多 LNMP, 你真的了解 N 与 P 交互吗?
(图片来源于慕课网教程)


我们以用户访问index.php为,服务器环境为LNMP:

  1. 用户请求index.php时,首先到Nginx
  2. Nginx流程步骤:
    • 根据配置查找路由
    • 加载nginx的fast-cgi模块(FastCGI的Client),将根据fastcgi.conf文件中fastcgi_*配置参数值也一并加入转发任务中
    • 根据nginx.conf文件fastcgi_pass配置将请求转发到127.0.0.1:9000
  3. PHP-FPM操作:
    • PHP-FPMmaster进程监听9000端口。
    • 收到请求后调用子进程来处理逻辑,PHP解释器解释PHP语法并返回给Nginx
  4. Nginx操作:
    • 将响应返回给用户

相关原文链接

若有什么不正确指教出来 :bowtie:


以上所述就是小编给大家介绍的《用了那么多 LNMP, 你真的了解 N 与 P 交互吗?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

中国机器人

中国机器人

[中]王鸿鹏、[中]马娜 / 辽宁人民出版社 / 2017-1-1 / 48.00元

本书对中国机器人领域的发展历史做了引人入胜的介绍,中国机器人成长的过程也是中国经济由弱到强的历程。本书实际是选择了一个独特的视角来解读中国数十年的政治、经济、国家战略问题。中国的未来充满了多重可能性,本书对想了解中国当代与未来发展战略的读者是难得的读本,对智能制造这一当今世界*受关注的高科技领域在战略层面和科技伦理层面进行了深入地剖析和思考,其中提出的诸多前沿性观点是全球都将面对的问题,对中国科学......一起来看看 《中国机器人》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具