前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fastcgi,cgi,php-fpm之间的关系及区别

fastcgi,cgi,php-fpm之间的关系及区别

作者头像
C4rpeDime
发布2018-08-28 10:24:57
4920
发布2018-08-28 10:24:57
举报
文章被收录于专栏:黑白安全黑白安全
fastcgi,cgi,php-fpm之间的关系及区别 fastcgi,cgi,php-fpm之间的关系及区别 代码艺术
fastcgi,cgi,php-fpm之间的关系及区别 fastcgi,cgi,php-fpm之间的关系及区别 代码艺术

一、CGI

所谓的环境服务器只是内容的分发者,常用的有apache、nginx等。比如ngxin中如果有请求index.html,那么ngxin会根据你的路径配置去相对应的找到这个文件最后返回给浏览器,这里分发的是静态数据。如果是请求的是一个PHP文件呢?假设请求过来的是一个index.php,这个时候nginx发现它居然不是静态文件,就会去找PHP解析器来帮忙,他会把这个请求简单处理后交给PHP这个哥们。他会把一系列的数据也一起交给PHP,一般有url中的整个数据,以及header头中的一些信息等 。回过头来那么CGI是什么呢?他就是一种规定标准,规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。

二、FastCGI

当环境服务器把东西转交给PHP时,PHP会解析php.ini文件,然后通过php的配置要求去处理这些请求,再以规定CGI规定的格式告诉环境服务器我处理完了,退出进程。环境服务器再把结果返回给浏览器。

通过上面解释,会发现每次请求php都要去重新初始化,这样及其的降低性能,那么Fastcgi就是来提高这块的性能。Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对请求进程的作用。

三、PHP-FPM

上面在CGI的介绍中提到PHP会去解析请求以及重新去加载php.ini文件,这个东西就是php-cgi解释器。php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理。PHP-FPM的作用就是去调度管理这些进程,说白了fastcgi是一个协议,php-fpm实现了这个协议

当我们修改php.ini之后,php-cgi进程是没办法平滑重启的。php-fpm对此的处理机制是新的worker用新的配置,已经存在的worker处理完手上的活就可以歇着了,通过这种机制来平滑过度。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-202,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档