广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php中cgi和fcgi有什么区别
  • 226
分享到

php中cgi和fcgi有什么区别

php 2022-08-08 13:08:20 226人浏览 泡泡鱼
摘要

PHP中cgi和fcgi的区别:cgi是“common gateway interface”的缩写,指的是通用网关接口,而fcgi是“fast common gateway interface”的缩写,指的是快速通用网关接口。“php-cg

PHP中cgi和fcgi的区别:cgi是“common gateway interface”的缩写,指的是通用网关接口,而fcgi是“fast common gateway interface”的缩写,指的是快速通用网关接口。“php-cgi”是CGI协议的实现,“PHP-FPM”是FCGI协议的实现。

本文操作环境:windows10系统、PHP8.1版、Dell G3电脑

php中cgi和fcgi有什么区别

CGI:common gateway interface 通用网关接口

FCGI:fast common gateway interface 快速通用网关接口

php-cgi是CGI协议的实现,PHP-FPM是FCGI协议的实现。

CGI 就是WEB服务器Nginx后端动态脚本语言如PHP通信的协议接口。

扩展知识

1.场景:

浏览器请求web服务器如nginx,如果请求的是静态的index.html,则nginx可以直接返回。但是如果请求的是idex.php,nginx根据配置发现不是静态资源,需要请求后端的服务。那么,nginx在请求后端服务时,需要以什么样的格式、发送给后端服务什么样的数据呢?CGI就是定义格式、数据的协议。

2.CGI协议的缺点:

CGI协议每次在请求后端服务时都要启动实现CGI协议的程序,这里就是PHP解析器。PHP解析器会解析PHP.ini文件,进行初始化工作,处理请求、返回结果。每个请求都要重新初始化,工作太冗余。所以,FCGI应运而生。

因为PHP是解释型语言,因此需要解释器去解释PHP代码。

3.FCGI的优点:

FCGI协议首先启动一个master,master用来解析PHP.ini文件,进行初始化工作。启动多个worker,worker用来处理具体的请求。这样将初始化和处理具体的请求就分离了。这样也就需要一个程序来管理master和worker,所以PHP-FPM就出现了。

FCGI采用C/S架构。将web服务器与脚本解析服务器分离开来。使得web服务器只处理静态资源和将后端脚本解析服务器返回的数据返回给浏览器。

web服务器nginx不支持对外部程序如PHP程序的直接调用或者解析,因此必须通过CGI接口来调用。这是其实需要将CGI进行一个封装,形成一个wrapper,其实就是PHP-FPM。nginx调用PHP-FPM,PHP-FPM再调用后端的PHP代码,然后PHP-FPM返回结果给nginx。

现在PHP-FPM已经被集成到PHP内核中。

PHP-FPM与nginx经常会部署在不同服务器上,以减轻前端nginx处理静态资源,转发动态请求的压力。

而且FCGI也比CGI要安全

4.CGI协议的实现PHP-CGI

如果修改了php.ini文件,PHP-CGI是无法平滑过渡的。也就是,必须要重启PHP-CGI程序才能使用这些新的配置。

5.FCGI协议的实现PHP-FPM

如果修改了php.ini文件,PHP-FPM可以实现平滑过渡。对于修改之前的worker,当处理完这次请求之后,会对其进行销毁,新生成的worker可以使用新的配置。这样也就实现了平滑过渡。

而且,如果PHP-CGI进程挂了,PHP也就不能运行了。PHP-FPM没有这个问题,守护进程会平滑重新启动一个子进程。

PHP-FPM在出现之前,其实有个从lightHttpd发展来的spawn-fcgi。PHP-FPM可以在初始化时创建多个worker,当有worker空闲时,可以对worker进行回收。

spawn-fcgi在高并发时会出现内存泄漏、甚至自动重启FCGI的问题。

以上就是php中cgi和fcgi有什么区别的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: php中cgi和fcgi有什么区别

本文链接: https://www.lsjlt.com/news/33580.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php中cgi和fcgi有什么区别
    php中cgi和fcgi的区别:cgi是“common gateway interface”的缩写,指的是通用网关接口,而fcgi是“fast common gateway interface”的缩写,指的是快速通用网关接口。“php-cg...
    99+
    2022-08-08
    php
  • php cgi和fastcgi有什么区别
    PHP CGI(Common Gateway Interface)和FastCGI(Fast Common Gateway Inte...
    99+
    2023-09-22
    php
  • php中cli和cgi运行模式有什么区别
    区别:CLI指的是命令行的运行模式,即在控制台或者是shell中键入命令执行PHP脚本代码;而CGI是公共网关接口的运行模式,就是Apache在遇到PHP脚本的时候会将PHP程序提交给CGI应用程序(php-cgi.exe)解释,解释之后的...
    99+
    2023-05-14
    php
  • php中cli和cgi运行模式有哪些区别
    这篇文章主要讲解了“php中cli和cgi运行模式有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中cli和cgi运行模式有哪些区别”吧!区别:CLI指的是命令行的运行模式,即...
    99+
    2023-07-05
  • php中use和include有什么区别
    php中use和include有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。HP中use、include的区别include是导入文件,如果找不到文件,include...
    99+
    2023-06-15
  • php中mysql和mysqli有什么区别
    这篇文章主要介绍了php中mysql和mysqli有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。区别:mysqli是永远连接函数,而mysql是非持继连接函数。my...
    99+
    2023-06-15
  • PHP中empty()和isset()有什么区别
    这篇文章主要讲解了“PHP中empty()和isset()有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中empty()和isset()有什么区别”吧!二者共同点都可以判定一...
    99+
    2023-06-21
  • php中nts和ts有什么区别
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php中nts和ts有什么区别在PHP 开发和生产环境搭建过程中,需要安装PHP语言解析器。官方提供了2种类型的版本,线程安全(TS)版和非线程安全(NTS)版,有时...
    99+
    2015-12-17
    PHP
  • php中getenv和server有什么区别
    php中getenv和server的区别:1、getenv可获取系统的环境变量,语法为“string getenv(string varname)”,而“$_SERVER”是服务器超级全局变量数组;2、getenv不支持IIS的isapi方...
    99+
    2022-08-26
  • php中int和intval有什么区别
    php中int和intval的区别:1、int是指Integer整型,intval是指用于获取变量整数值的函数;2、int的强制转换与intval函数在超出各种类型显示的最大值时,intval如果参数是字符串,则返回字符串中第一个不是数字的...
    99+
    2022-08-08
    php
  • PHP中include和require有什么区别
    这篇文章主要介绍了PHP中include和require有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP include vs...
    99+
    2022-10-19
  • php中self和static有什么区别
    这篇文章将为大家详细讲解有关php中self和static有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、Wa...
    99+
    2023-06-14
  • php中socket和curl有什么区别
    这篇文章主要介绍php中socket和curl有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!socket是一种数据结构,可以用来在服务器和客户端进行对话。curl是利用url语法规定来传输文件和数据的规定,...
    99+
    2023-06-25
  • javascript和php有什么区别
    javascript和php有什么区别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。javascript与php的区别服务器与客户端JavaScript脚本语言是一种前端语...
    99+
    2023-06-14
  • php和it有什么区别
    本文操作环境:Windows7系统,PHP7.1版,Dell G3电脑。php和it有什么区别一:PHP (计算机编程语言)PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤...
    99+
    2016-12-13
    php it
  • php和web有什么区别
    本文操作环境:Windows7系统,PHP7.1版,Dell G3电脑。php和web有什么区别一:PHP (计算机编程语言)PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,...
    99+
    2015-10-28
    php web
  • php-fpm和swoole有什么区别
    本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php-fpm和swoole有什么区别一.PHP-FPM早期版本的 PHP 并没有内置的 WEB 服务器,而是提供了 SAPI(Server API)给第三方做对接。...
    99+
    2019-08-28
    PHP
  • php include和include_once有什么区别
    当我们在使用 PHP 编写网页时,有时我们需要在当前 PHP 文件中包含其他 PHP 文件中的代码。这时,就可以使用 include 或 include_once 函数来实现文件包含。那么,include 和 include_once 到底...
    99+
    2023-05-14
    include_once include php
  • php socket和curl有什么区别
    这篇文章主要讲解了“php socket和curl有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php socket和curl有什么区别”吧!php socket和curl的不同之...
    99+
    2023-06-25
  • php中GET和POST方法有什么区别
    小编给大家分享一下php中GET和POST方法有什么区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!区别:1、GET只能发送有限数量的数据,POST没有限制。2...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作