首页 > 编程语言 >CGI、FastCGI和PHP-FPM的关系

CGI、FastCGI和PHP-FPM的关系

时间:2024-01-13 13:44:07浏览次数:42  
标签:CGI Web FPM 程序 服务器 PHP FastCGI

参考:

 https://baijiahao.baidu.com/s?id=1636573471105531342

https://www.jianshu.com/p/80e46a80fdbd

https://www.zhihu.com/question/30672017

 

CGI、FastCGI和PHP-FPM的关系

CGI:公共网关接口(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。
CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、Java、VB 和Delphi 等。CGI分为标准CGI和间接CGI两种。标准CGI使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI又称缓冲CGI,在CGI程序和CGI接口之间插入一个缓冲程序,缓冲程序与CGI接口间用标准输入输出进行通信;CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。


fastcgi 通用网关接口,它是一段程序,运行在服务器上,提供同客户端HTML页面的接口,通俗的讲CGI就像是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器,再把服务器执行的结果返还给HTML页;用CGI可以实现处理表格,数据库查询,发送电子邮件等许多操作,最常见的CGI程序就是计数器。CGI使网页变得不是静态的,而是交互式的。
CGI在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子:截止2013的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。

FastCGI 实际上是增加了一些扩展功能的 CGI 、是 CGI 的改进,描述了客户端和Web服务器程序之间传输数据的一种标准。
FastCGI 致力于减少Web服务器与CGI程序之间进行互动的开销,从而使Web服务器可以同时处理更多的Web请求。与 CGI 为每个Web请求创建一个新的进程不同, FastCGI 使用持续的进程来处理一连串的Web请求,这些进程由FastCGI进程管理器管理,而不是Web服务器。

CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。
FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。同样,SCGI 协议与 FastCGI 类似。
PHP-CGI:是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程序。
PHP-FPM:是 PHP(Web Application)对 Web Server 提供的 FastCGI 协议的接口程序,额外还提供了相对智能一些任务管理。CGI工作原理 web服务器收到用户请求,就会把请求提交给cgi程序(如php-cgi),cgi程序根据请求提交的参数作应处理(解析php),然后输出标准的html语句,返回给web服服务器,WEB服务器再返回给客户端,这就是普通cgi的工作原理CGI缺点: 每一次web请求都会有启动和退出过程。

PHP-FPM也是用于调度管理PHP解析器php-cgi的管理程序。

 

标签:CGI,Web,FPM,程序,服务器,PHP,FastCGI
From: https://www.cnblogs.com/haoxuanchen2014/p/17962274

相关文章

  • PHP学习第一天:初识与基础
    今天,我开始了PHP的学习之旅。PHP是一种常用的服务器端脚本语言,广泛应用于Web开发。早上,我首先了解了PHP的基本语法和结构。我学习了如何编写一个简单的PHP脚本,包括开头和结束的标记,以及如何在HTML中嵌入PHP代码。通过编写一个简单的“Hello,World!”程序,我成功地在浏览器中输出了......
  • thinkphp6的join连表查询
    说明join要关联的(完整)表名以及别名,支持三种写法:写法1:['完整表名或者子查询'=>'别名']写法2:'完整表名别名'写法3:'不带数据表前缀的表名'condition关联条件,可以为字符串或数组,为数组时每一个元素都是一个关联条件。type关联类型,可以为:INNER、LEFT、RIGHT、FULL,......
  • ubuntu 安装 PHP7.4
    1、添加PHP7.4的PPA存储库。执行以下命令以添加该存储库:sudoaptupdatesudoaptinstallsoftware-properties-commonsudoadd-apt-repositoryppa:ondrej/php2、安装aptinstallphp7.4php7.4-cliphp7.4-fpmphp7.4-mysqlphp7.4-curlphp7.4-gdphp7.4-zipphp7......
  • PHP+uniapp进销存源码|erp源码计算机毕业设计[附源码]
     企业资源规划(ERP)是一种软件系统,可帮助组织自动化和管理核心业务流程以获得最佳性能。ERP软件协调公司业务流程之间的数据流,提供单一事实来源并简化整个企业的运营。它能够将公司的财务、供应链、运营、商业、报告、制造和人力资源活动连接到一个平台上。 大多数公司都......
  • win下php7.2安装xdebug和php-redis
    先通过phpinfo()查看自己的php信息确定版本为:7.2-nts-vc15-x861、安装xdebughttps://xdebug.org/download.php下载对应的版本dll文件将dll文件复制到php文件夹的ext文件夹内修改php.ini,添加zend_extension=php_xdebug-2.7.0beta1-7.2-vc15-nts.dll重启apache,再次查看phpinfo()2、安......
  • fpmarkets盘点成功交易者的十个习惯(二)
    由于上篇文章篇幅有限,今天这篇文章fpmarkets继续分享成功交易者的十个习惯。⑥详述细节的习惯一个交易者应该寻找和发现自己交易中的缺点,并克服它们,试图阐述一个完美的交易策略。⑦趋势交易的习惯很明显,趋势交易是最可靠的交易方式。和专家争论没有意义。⑧设置止损单的习惯忽视设......
  • PHP常用符号和函数
    //单行注解/**/多行注解引号的使用’’单引号,没有任何意义,不经任何处理直接拿过来;”“双引号,php动态处理然后输出,一般用于变量.变量形态:一种是True即真的;另一种是False即假的常见变量形态:string字串(数字\汉字\等等)integer整数(1、2、3、4、5、0、-1......
  • PHP加解密
    备注:此代码是需要配合php扩展mcrypt才可以使用的,如果觉得繁琐,可以使用openssl_encrypt方式,参考:https://www.cnblogs.com/ccdr/p/17596664.html /***敏感信息加密(仅服务端内部自己使用)*前提:必须安装对应的php扩展mcrypt后才可以使用*@paramstring$key......
  • php代码构建发送邮件的smtp接口操作流程
    构建发送邮件SMTP接口的PHP代码操作指南随着互联网的不断发展,电子邮件成为人们生活和工作中不可或缺的一部分。在Web开发中,通过PHP代码构建发送邮件的功能是常见的需求之一。本文将详细介绍如何使用PHP来构建和使用SMTP(SimpleMailTransferProtocol)接口,实现高效的邮件发送功能。......
  • php代码构建发送邮件的smtp接口操作流程
    构建发送邮件SMTP接口的PHP代码操作指南随着互联网的不断发展,电子邮件成为人们生活和工作中不可或缺的一部分。在Web开发中,通过PHP代码构建发送邮件的功能是常见的需求之一。本文将详细介绍如何使用PHP来构建和使用SMTP(SimpleMailTransferProtocol)接口,实现高效的邮件发送功能。......