最近学习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三者的关系

相关文章:

  • 2021-05-16
  • 2021-10-16
  • 2021-10-26
  • 2021-08-29
  • 2022-03-04
  • 2021-06-25
  • 2021-11-14
  • 2021-10-20
猜你喜欢
  • 2021-07-29
  • 2021-09-05
  • 2021-11-26
  • 2021-04-30
  • 2022-01-09
  • 2021-08-25
相关资源
相似解决方案