fast-cgi/cgi协议与php-fpm/php-cgi程序

一、fast-cgi/cgi

fast-cgicgi都是web服务器程序url处理程序两者之前的应用层网络协议,现在都是用fast-cgi协议,那么现的url处理程序也都是实现了fast-cgi
二、php-fpm/php-cgi

**php-fpm**是实现**fast-cgi协议**的一个**程序****php-cgi**是实现了**cgi协议**的一个**程序**

这是网上很多的理论,这两个程序就是实现对应协议的两个程序
php-fpmphp-cgi两个程序有什么不同点相同点呢?

一、php-fpmphp-cgi相同点
相同点它们都是php解释器都是用来解释php源代码处理web服务器传来的对应协议参数,然后根据对应协议输出处理结果给web服务器

二、php-fpmphp-cgi不同点

不同点就是两者与web服务器程序通信使用的网络协议不同,php-fpm程序web服务器程序通信用的是fast-cgi协议php-cgi程序web服务器程序通信用的是cgi协议

当然不可能平白无故的使用两个协议,php-cgi程序php-fpm程序的对web服务器程序的请求处理机制是不同的

php-cgi程序是每次都重新加载新的程序来处理web服务器程序的请求,所以每次处理都有相同的操作,如解析php.ini文件,初始化执行环境,然后开始编译处理php源代码,再以cgi协议规定的格式返回处理结果给web服务器程序,然后退出cgi程序进程

php-fpm程序,则不一样,php-fpm程序会先启一个master程序,解析配置文件,初始化执行环境,然后再启动多个worker程序。当web服务器程序的请求请求过来时,master程序会把请求传递给一个worker程序,由worker程序处理请求后,再以fast-cgi协议规定的格式返回处理结果给web服务器程序,返回结果后,worker程序不会被销毁,而是等下次处理,这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。

三、phpv7.2.19的php-cgi
phpv7.2.19没有php-fpm程序了,现在只有php-cgi程序了,直接由php-cgi程序实现了fast-cgi协议,与web服务器程序通迅机制跟之前的php-fpm程序一样的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过浏览器由http协议访问服务器,由web服务器程序通过fast-cgi协议php-cgi程序访问,php-cgi程序输出当前运行模式web服务器程序,最终浏览器收到的是fast-cgi运行模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章