PHP知识笔记:CGI, FastCGI, PHP-CGI, PHP-FPM, Spawn-FCGI区别

简介: PHP知识笔记:CGI, FastCGI, PHP-CGI, PHP-FPM, Spawn-FCGI区别
+关注继续查看

原作者链接:https://www.aicyun.com/article/34

原理

nginx只是 web 中的内容分发者,比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。即启动对应的CGI程序,PHP解析器会解析php.ini文件,初始化一个环境进程,然后处理请求,在以规定CGI规定的格式返回处理后的结果,退出进程,nginx 在把结果返回给浏览器.

CGI

CGI是公共网关接口(common gateway interface);http 服务器与你的或者其他机器上的程序进行交谈的一种工具,程序需运行在网络服务器上
CGI可以用于任何语言,只有这种语言具有标准的输入,输出和环境变量.
CGI是个协议.

FastCGI

Fastcgi是用来提高CGI程序性能的,CGI程序的性能出在CGI对每个请求都会执行解析php.ini初始化执行环境这些步骤,每次请求都启动一个进程,假如有几千万请求那就完了.
Fastcgi会先启动一个master,专门解析配置,初始化环境,在启动多个worker进程,请求来了,master会传递给一个worker,然后继续等待下一个请求,这就避免了重复的解析和初始化,效率提升不少.假如worker进程不够,master主进程会多启动几个 worker,如果空闲了,master 会主动停止一些 worker.这节省了大量的资源

PHP-CGI

PHP-CGI是PHP自带的FastCGI管理器
弊端:

  • php-cgi假如改了配置文件需要重启php-cgi,不能做到平滑重启
  • 直接杀死php-cgi进程,php 就不能运行了

PHP-FPM

PHP-FPM是一个PHP FastCGI管理器,准确的说是管理的 php-cgi,fastcgi是一种协议,和进程无关.php-fpm在修改php.ini后不像php-cgi不能平滑重启.php-fpm会让新的worker用新的配置,已经存在的 worker 处理完了就停止了.

php-cgi只是解释PHP脚本的程序而已

Spawn-FCGI

通用的FastCGI管理服务器,lighttpd的一部分.最新的lighttpd也没有包含这一块,不建议使用.

目录
相关文章
|
9月前
|
JSON PHP 数据格式
php笔记
php笔记
87 0
php笔记
|
11月前
|
存储 监控 前端开发
【php详细笔记】上传文件到服务器(下)
【php详细笔记】上传文件到服务器
【php详细笔记】上传文件到服务器(下)
|
11月前
|
存储 缓存 安全
【php详细笔记】上传文件到服务器(上)
【php详细笔记】上传文件到服务器
195 0
【php详细笔记】上传文件到服务器(上)
|
11月前
|
Web App开发 安全 Shell
【PHP快速入门】详细笔记---精简版(下)
【PHP快速入门】详细笔记---精简版
【PHP快速入门】详细笔记---精简版(下)
|
11月前
|
安全 Java Linux
【PHP快速入门】详细笔记---精简版(上)
【PHP快速入门】详细笔记---精简版
【PHP快速入门】详细笔记---精简版(上)
|
12月前
|
安全 PHP
PHP基础笔记-NO.4
PHP基础笔记
51 0
PHP基础笔记-NO.4
|
12月前
|
存储 PHP
PHP基础笔记-NO.3
PHP基础笔记
54 0
|
12月前
|
存储 PHP
PHP基础笔记-NO.2
PHP基础笔记
42 0
|
12月前
|
开发框架 前端开发 JavaScript
PHP基础笔记-NO.1
PHP基础笔记
61 0
PHP基础笔记-NO.1
|
算法 搜索推荐 PHP
PHP 零基础入门笔记(15):算法 algorithm
PHP 零基础入门笔记(15):算法 algorithm
相关产品
云迁移中心
推荐文章
更多