随著时间的推进,php可以说是花样越来越多,很多就在问说CGI跟FPM是有什么关系
CGI与FPM
CGI是一种协议,为了保证web server传过来的资料是标准格式
比如说,如果请求 index.html,web server会去找到这个文件再丢给浏览器,但这个只限于静态文件而已,如果是index.php呢,就需要去找php解析器来处理了,接下来web service就会把这个请求交给php 解析器处理,那会传那一些资料呢?像是 post或是url还有http header等,CGI就是规定要传哪些资料、以及怎么样的格式
FastCGI是什么?
接下来又提到那FastCGI是什么呢? FastCGI是用来提高CGI处理process性能用的
那FastCGI会怎么实作呢?
当php启动时、会去寻找php.ini、进行环境的初始化,如果不使用FastCGI的情况下,每一个请求都会做这个动作,很明显浪费系统资源,所以FastCGI会先启动一个master,解析配置文件用,接下来再启动worker,当请求过来时、master会递资讯给worker,然后接下来等下一个请求,有这个机制就不用每一次重新跑一次初始化的动作了
PHP-FPM
那PHP-FPM呢? Fastcgi是一个协议,其实是php-fpm实现了这个协议
php-fpm是管理fastcgi ,大概的关系就是这样子
所以最后才会造成如果修改php.ini档案之后,才需要重新启动php-fpm,原因就是这个样子
by:conson