• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHPFPM-进化史

php 搞代码 4年前 (2022-03-01) 33次浏览 已收录 0个评论
文章目录[隐藏]

最近有幸读到一篇文章,一文将CGI 的进化史讲的特地具体,尽管我本人之前也整顿过 CGI、FastCGI、PHP-FPM 相干的笔记,然而并没有从原理的角度来意识 CGI。

CGI 的诞生

早些年的Web 利用很简略,客户端通过浏览器发动申请,服务端间接返回响应。

随着互联网的倒退,简略的Web 利用曾经不能满足开发者们了。
咱们心愿Web服务器有更多的性能,飞速发展的同时还能让不同语言的开发者也能退出。

CGI协定协定的诞生就是 Web服务器和其余畛域的开发者在保障恪守协定的根底上,剩下的能够自由发挥,而实现这个协定的脚本叫做CGI 程序。

CGI协定规定了须要向CGI脚本设置的环境变量和一些其余信息,CGI程序实现某一个性能,能够用PHP,Python,Shell或者C语言编写。

在没有CGI 之前,其余语言如果须要接入Mysql 或者Memcache,还须要应用C 语言,但有了CGI协定,咱们的Web解决流程能够变成下图这样:

FastCGI 的诞生

CGI程序存在致命的毛病:每当客户端发动申请,服务器将申请转发给CGI,WEB 服务器就申请操作系统生成一个新的CGI解释器过程(如php-cgi),CGI过程则解决完一个申请后退出,下一个申请来时再创立新过程。

咱们晓得,执行一个PHP程序的必须要先解析php.ini文件,而后模块初始化等等一系列工作,每次都重复这样十分浪费资源。

FastCGI协定在CGI协定的根底上,做出了如下扭转:

  1. FastCGI被设计用来反对常驻(long-lived)利用过程,缩小了fork-and-execute带来的开销
  2. FastCGI过程通过监听的socket,收来自Web服务器的连贯,这样FastCGI 过程能够独立部署
  3. 服务器和FastCGI监听的socket 之间依照音讯的模式发送环境变量和其余数据

咱们称实现了FastCGI协定的程序为FastCGI程序,FastCGI程序的交互方式如下图所示:

PHP-FPM 的诞生

FastCGI 程序诚然曾经很好了,但咱们的需要总是有点刻薄,它还是存在一些显著毛病的:

  1. 当咱们更改配置文件(php.ini)后,php-cgi(FastCGI 程序) 无奈平滑重启
  2. 咱们fork的过程个数和申请量反比,申请忙碌时 fork 过程多,动静调整 php-cgi还没做到

下面提及php-cgi 实现的FastCGI问题官网没有解决,侥幸的是有第三方帮咱们解决了,它就是 php-fpm

它能够独立运行,不依赖php-cgi,换句话说,它本人实现了FastCGI协定并且反对过程平滑重启且带过程治理性能。

参考链接

  • 从CGI到FastCGI到PHP-FPM

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHPFPM-进化史

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址