首页 » Web前端 » phpphpcgi技巧_CGIFastCGIPHPCGI与PHPFPM的概念以及各个之间的关系

phpphpcgi技巧_CGIFastCGIPHPCGI与PHPFPM的概念以及各个之间的关系

访客 2024-11-17 0

扫一扫用手机浏览

文章目录 [+]

必须明白 CGI 与 FastCGI 只是协议 没有进程 !








根本观点当Web Server收到 index.php 这个要求后,通过 web Server 的配置 知道只是一个动态要求会启动对应的 CGI 程序。
这里便是PHP的解析器(PHP-CGI) 接下来PHP解析器会解析php.ini文件,初始化实行环境,然后处理要求, 再以CGI规定的格式返回处理后的结果,退出进程,Web server再把结果返回给浏览器。
这便是一个完全的动态PHP Web访问流程,接下来再引出这些观点,就好理解多了。

观点初识

phpphpcgi技巧_CGIFastCGIPHPCGI与PHPFPM的概念以及各个之间的关系

CGI:是 Web Server 与 Web Application 之间数据交流的一种协议。
FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。
同样,SCGI 协议与 FastCGI 类似。
PHP-CGI:是 PHP (Web Application)对 Web Server 供应的 CGI 协议的接口程序。
PHP-FPM: 是 PHP(Web Application)对 Web Server 供应的 FastCGI 协议的接口程序, 额外还供应了相对智能的一些任务管理。
补充:可以说php-fpm不仅仅是用来在web server 和 php之间通信的fastCGI接口程序。
同样还是php的进程池管理工具。
Web Server:一样平常指Apache、Nginx、IIS、Lighttpd、Tomcat等做事器,Web Application:一样平常指PHP、Java、Asp.net等运用程序。

CGI

phpphpcgi技巧_CGIFastCGIPHPCGI与PHPFPM的概念以及各个之间的关系
(图片来自网络侵删)

观点CGI全称是“公共网关接口”(Common Gateway Interface),HTTP做事器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络做事器上。
CGI可以用任何一种措辞编写,只要这种措辞具有标准输入、输出和环境变量。
事情事理 web做事器收到用户要求,就会把要求提交给cgi程序(如php-cgi),cgi程序根据要求提交的参数作应处理(解析php), 然后输出标准的html语句,返回给web服做事器,WEB做事器再返回给客户端, 这便是普通cgi的事情事理。
缺陷 每一次web要求都会有启动和退出过程,也便是每次都要花费韶光去fork一次 在互联网不发达的年代是可以的,但是在现在,互联网的时期 如果是高并发的情形下 可能就炸了

FastCGI

观点: Fastcgi是CGI的升级版,也是一种通信协议,它是用来提高CGI程序性能的。
特点Fastcgi的特点是会在一个进程中依次完成多个要求,以达到提高效率的目的, 大多数Fastcgi实现都会掩护一个进程池。
事情事理FastCGI会先启动一个master,解析配置文件,初始化实行环境,然后再启动多个worker。
当要求过来时,master会通报给一个worker, 然后立即可以接管下一个要求。
这样就避免了重复的劳动,效率自然是高。
而且当worker不足用时,master可以根据配置预先启动几个worker等着; 当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。

FASTCGI与CGI的差异:

在上书情形下,该当可能知道cgi 实行有多慢了,每次要求都要 解析php.ini 重新初始化利用FastCGI,所有这些都只在进程启动时发生一次。
关于上述协议的实现PHP-CGI

PHP-CGI是PHP自带的FastCGI管理器。
它是php的阐明器。
PHP-CGI只是个CGI程序,他自己本身只能解析要求,返回结果毛病:1.php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。
如果杀去世进程。
那php 就凉凉了2、不支持动态worker调度,只能一开始指定要起几个worker

PHP-FPM

PHP-fpm是针对付PHP的,Fastcgi的一种实现,他卖力管理一个进程池,处理来自Web做事器的要求。
目前,PHP-fpm是内置于PHP的。
众所周知 PHP的阐明器是php-cgiphp-cgi只是个CGI程序,他自己本身只能解析要求,返回结果,不会管理进程以是嘞 民间大佬 就研究出了 PHP-FPM 由于 太好用了 就在php 5.3之后 官方就将其并入官方包中php-fpm的管理工具是php-cgi,但不能说php-fpm是FastCGI进程的管理器,由于前面说了FastCGI是个协议他卖力管理一个进程池,来处理来自Web做事器的要求。
对付php.ini文件的修正,php-cgi进程是没办法平滑重启的,有了php-fpm后,就把平滑重启成为了一种可能,php-fpm对此的处理机制是新的worker用新的配置,已经存在的worker处理完手上的活就可以歇着了,通过这种机制来平滑过度。

这是php-fpm 的流程图

这是普通的cgi的流程图

两张图片摘选自csdn 贝伦酱
标签:

相关文章

探索IT行业,职业发展新天地

在信息化时代,IT行业以其迅猛的发展速度和巨大的市场潜力,成为了无数年轻人追逐梦想的热土。从软件开发到网络安全,从大数据分析到人工...

Web前端 2024-12-27 阅读0 评论0

探索xit润喉糖,守护嗓音健康的新选择

随着现代生活节奏的加快,人们对于嗓音健康的关注程度日益提高。在这个背景下,xit润喉糖凭借其独特的功效和品质,成为了守护嗓音健康的...

Web前端 2024-12-27 阅读0 评论0

备机借用协议,企业应急管理的保障伞

随着社会经济的快速发展,企业面临的竞争压力日益加剧。在激烈的市场竞争中,企业对信息技术的依赖程度越来越高。信息技术系统的稳定运行对...

Web前端 2024-12-27 阅读0 评论0