程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

PHP面试:简述CGI、FastCGI和PHP-FPM的区别

发布于2021-03-14 06:19     阅读(1087)     评论(0)     点赞(26)     收藏(1)


CGI

CGI:通用网关接口(Common Gateway Interface),是Web 服务器和请求处理程序之间传输数据的一种标准或协议,只要遵循这个标准就可以用任何动态语言实现处理程序。

通常所说的CGI是指CGI程序,即实现了CGI接口标准的程序。

CGI程序的工作方式

Web服务器一般只处理静态文件请求(如 jpg、htm、html),如果碰到一个动态脚本请求(如php),web服务器主进程,就fork出一个新的进程来启动CGI程序,也就是将动态脚本请求交给CGI程序来处理。启动CGI程序需要一个过程,比如,读取配置文件,加载扩展等。CGI程序启动后,就会解析动态脚本,然后将结果返回给Web服务器,最后Web服务器再将结果返回给客户端,刚才fork的进程也会随之关闭。
这样,每次用户请求动态脚本,Web服务器都要重新fork一个新进程,去启动CGI程序,由CGI程序来处理动态脚本,处理完后进程随之关闭。
这种工作方式的效率是非常低下的。


FastCGI

FastCGI,主要行为是将CGI解释器进程保持在内存中并因此获得高效的性能。
FastCGI进程管理器需要单独启动,启动FastCGI后,会生成一个FastCGI主进程和多个子进程(子进程其实就是CGI解释器进程)。

当客户端请求Web服务器上的动态脚本时,Web服务器会将动态脚本通过TCP协议交给FastCGI主进程,FastCGI主进程根据情况,安排一个空闲的子进程来解析动态脚本,处理完成后将结果返回给Web服务器,Web服务器再将结果返回给客户端。该客户端请求处理完毕后,FastCGI子进程并不会随之关闭,而是继续等待主进程安排工作任务。


PHP-FPM

PHP-FPM,FastCGI进程管理器(FastCGI Process Manager),提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置等。




所属网站分类: 技术文章 > 博客

作者:天上飘来一个字

链接:http://www.phpheidong.com/blog/article/3764/6e58aa025898a025c342/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

26 0
收藏该文
已收藏

评论内容:(最多支持255个字符)