目录
- 概述
- 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会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据,如下图:
当web server收到动态php请求呢?
比如当Web Server收到 index.php 这个请求后,会启动对应的 CGI 程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程,Web server再把结果返回给浏览器。
CGI
是 Web Server (Apache、Nginx、IIS、Lighttpd、Tomcat等服务器)与 Web Application (PHP、Java、Asp.net等应用程序)之间数据交换的一种协议。
FastCGI
同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。
FastCGI与CGI的区别
Fastcgi则会先fork一个master,
解析php.ini配置文件,
初始化执行环境,
然后再fork多个worker。
当请求过来时,master会传递给一个worker,
然后立即可以接受下一个请求。
当worker不够用时,master可以根据配置预先启动几个worker等着;
当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。
php-fpm
那PHP-FPM又是什么呢?它是一个实现了Fastcgi协议的程序,用来管理Fastcgi起的进程的,即能够调度php-cgi进程的程序。
php7进阶到架构师相关阅读
最后,欢迎大家留言补充,讨论~~~
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~