tomcat 怎么解析php_详解CGI,FastCGI,php-fpm三者区别与联系

目录

  • 概述
  • web server(Nginx)工作流程
  • CGI
  • FastCGI
  • FastCGI与CGI的区别
  • php-fpm
  • php7进阶到架构师相关阅读

概述

这是关于php进阶到架构之php7核心技术与最佳实战学习的第篇文章:详解CGI,FastCGI,php-fpm三者区别与联系

  • 第一篇:用房子的思维秒懂php7传值与传引用的区别
  • 第二篇: php7语法糖好甜,让你迷上php魔术方法
  • 第三篇:php7魔术方法__call的最佳实战之数据库PDO类的驱动设计实战
  • 第四篇:精通PHP正则表达式,看这一篇就够啦!
  • 第五篇:不懂对象设计原则,都不好意思自称php大师
  • 第六篇:socket通信很难?这一文让你轻松搞定!
  • 第七篇:详解CGI,FastCGI,php-fpm三者区别与联系

了解CGI,FastCGI,php-fpm三者区别前,需要先了解web server的工作流程。

web server(Nginx)工作流程

Web Server(如Nginx)只是内容的分发者。举个例子,如果客户端请求的是 index.html,那么Web Server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据,如下图:

821f384099df19f6c387a2b8e4e10967.png

web server处理静态文件流程图

当web server收到动态php请求呢?

比如当Web Server收到 index.php 这个请求后,会启动对应的 CGI 程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程,Web server再把结果返回给浏览器。

e19930cb621ffde409618e508d4a67a9.png

web server处理php程序完整流程

CGI

是 Web Server (Apache、Nginx、IIS、Lighttpd、Tomcat等服务器)与 Web Application (PHP、Java、Asp.net等应用程序)之间数据交换的一种协议。

FastCGI

同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。

FastCGI与CGI的区别

CGI针对每个http请求都是fork一个新进程来进行处理,

处理过程包括解析php.ini文件,初始化执行环境等,

然后这个进程会把处理完的数据返回给web服务器,

最后web服务器把内容发送给用户,

刚才fork的进程也随之退出。

如果下次用户还请求动态资源,那么web服务器又再次fork一个新进程,周而复始的进行。

Fastcgi则会先fork一个master,

解析php.ini配置文件,

初始化执行环境,

然后再fork多个worker。

当请求过来时,master会传递给一个worker,

然后立即可以接受下一个请求。

当worker不够用时,master可以根据配置预先启动几个worker等着;

当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。

php-fpm

那PHP-FPM又是什么呢?它是一个实现了Fastcgi协议的程序,用来管理Fastcgi起的进程的,即能够调度php-cgi进程的程序。

php7进阶到架构师相关阅读

https://www.kancloud.cn/gofor/gofor

最后,欢迎大家留言补充,讨论~~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值