PHP-FPM遇到FastCgi和Cgi
简单介绍一下输入网址后发生的事情
总有人搞不懂PHP-FPM、FastCgi、Cgi三者是什么关系
笔者就来简单介绍一下这三个东西
一、访问静态文件时
1、浏览器上输入http://www.fuck.com/index.html
2、dns就会去解析www.fuck.com的ip
3、找到对应服务器上的web server
4、再找到对应路径的这个index.html文件
5、web server根据html规则解析后返回给浏览器文件内容
二、访问动态文件时
1、浏览器上输入http://www.fuck.com/index.php
2、dns就会去解析www.fuck.com的ip
3、找到对应服务器上的web server
4、web server知道这个不是静态文件
5、根据web server的配置去找这个解析器CGI来处理
6、nginx会把例如:
(1)url
(2)request的内容
(3)HTTP header
等等都告诉给CGI解析器
7、PHP解析器(CGI)会解析php.ini文件
8、初始化执行环境,
9、然后处理请求,
10、再以规定CGI规定的格式返回处理后的结果,退出进程
11、web server收到内容后返回给浏览器文件内容
理解PHP的CGI和FastCgi
一、CGI是什么
好了,CGI是个协议,就好像我是中国人,遇到个网友是法国人,那我们可以用英语沟通,英语这个语法规则就是个协议,跟CGI一样,遵循这个CGI规则,那我们都互相能理解对方的意思,最后就是nginx啊Apache啊这些web server也都理解了php文件是啥东西
二、FastCgi是什么
因为标准的CGI对每个请求都会起一个进程,那你去服务器下用ps aux | grep php看下,一个请求一个进程,得多占资源啊,这个时候,就产生了FastCgi,如下截图
1、FastCgi就先起一个master进程,这个master进程就来处理php.ini里的那些配置,初始化执行环境
2、再雇几个woker进程
3、当web server接收到请求,转给CGI时,CGI就给了master,master迅速转给它的worker,是不是效率更高了呢?
4、当worker不够用的时候怎么办呢?当然是根据配置再多雇几个啦(多起几个work进程)
5、雇佣了这么多worker,没那么多请求怎么办呢?当然是解雇掉啦(关掉work进程)
所以啊总结就是fastcgi就是cgi的升级版,目的当然就是节约资源提高性能
三、PHP-FPM是什么
因为FastCgi是一个协议,会起进程处理web server的请求,那进程之间怎么管理呢?就靠PHP-FPM了啊!
简单点说,cgi是php跟web server之间的协议,而fastcgi(英语这个语法规则)是更完善的cgi协议,最后靠php-fpm实现了这个协议(英语课文),梦想照进了现实啊
热门话题 · · · · · · ( 去话题广场 )
- 每天夸夸自己的三件小事 新话题 · 228次浏览
- 我给自己写了一个使用说明书 新话题
- 少年时代的科普读物 6454次浏览
- 现代人的“卡夫卡时刻” 2.3万次浏览
- 生活习惯帮我省了很多钱 4209次浏览
- 低谷期如何将“自怜”转化成“自爱”? 新话题 · 305次浏览