cgi、fastcgi和php-fpm三者的关系

最近学习nginx服务器的搭建与配置时,偶然看到关于fastcgi这个名词,经过了解之后,原来一直在使用,却是不容易被关注的知识点。

cgi、fastcgi、php-fpm的定义

  • cgi:是服务器(Apache/nginx)与应用程序(php/java)之间数据交换的一种协议
  • fastcgi:是cgi的优化版,更加高效(常驻型cgi)
  • php-fpm:fpm(fastcgi process manager) fastcgi的实现 php的fastcgi进程管理器

引导

首先,我们先梳理整个web请求流程

在整个网站架构中,Web Server(如Apache)只是内容的分发者。举个栗子,如果客户端请求的是 index.html,那么Web Server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。
如果请求的是 index.php,根据配置文件,Web Server知道这个不是静态文件,需要去找 PHP 解析器来处理,那么他会把这个请求简单处理,然后交给PHP解析器。
当Web Server收到 index.php 这个请求后,会启动对应的 CGI 程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程,Web server再把结果返回给浏览器。这就是一个完整的动态PHP Web访问流程。

一次完整nginx与与php-fpm的结合
cgi、fastcgi和php-fpm三者的关系_第1张图片

你可能感兴趣的:(环境搭建)