CGI,FastCGI和PHP-FPM之间的关系和区别

什么是CGI?
早期的web server只可以处理简单的静态web文件,但是随着技术的发展出现动态语言如PHP,Python。PHP语言交给PHP解析器进行处理,但是处理之后如何和web server进行通信呢?
为了解决不同的语言处理器与web server之间的通讯,出现了CGI协议。只要按照CGI协议编写程序,就可以实现与语言解析器与web server之间的通讯。
CGI协议虽然解决了语言解析器和seb server之间通讯的问题,但是它的效率很低。因为web server每收到一个请求都会创建一个CGI进程,PHP解析器都会解析php.ini文件,初始化环境,请求结束的时候再关闭进程。对于每一个创建的CGI进程都会执行这些操作。所以效率很低。

什么是FastCGI?
FastCGI是用来提高CGI性能的,FastCGI每次处理完请求之后不会关闭掉进程。而是保留这个进程,使这个进程可以处理多个请求。这样的话每个请求都不用再重新创建一个进程了。大大提升了处理效率。

什么是PHP-FPM?
PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个实现了Fastcgi的程序,并且提供进程管理的功能。进程包括master进程和worker进程。master进程只有一个,负责监听端口,接受来自web server的请求。worker进程一般会有多个,每个进程中会嵌入一个PHP解析器,进程PHP代码的处理。

原文地址:https://www.cnblogs.com/flzs/p/11679464.html

时间: 2024-07-31 09:30:42

CGI,FastCGI和PHP-FPM之间的关系和区别的相关文章

进程与线程之间的关系和区别 及 CPU调度

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 进程和线程的关系: (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程. (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源. (3)处理机分给线程,即真正在处理机上运行的是线程. (4)线程在执行过程中,需要协作同步.不同进程的线程间要利用消息通信的办法实现同步.

求解?表空间,表,用户这三者之间的 关系与区别?

发表于: 2012-02-11 16:40:58 小弟初学oracle,但是在表空间,用户,表这三者之间的关系,有点模糊,希望大牛指导下! 更多0分享到:       对我有用[0] 丢个板砖[0] 引用 | 举报| 管理 回复次数:21 关注 dengnanyi 一棵老松树 本版等级: #1 得分:0回复于: 2012-02-11 16:55:59 表空间:一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间(TABLESPACE).一个表空间可将相关的逻辑结构组合在一起.表:表(tabl

Socket ,WebSocket Ajax 之间的关系与区别

最近参与了一个 局域网聊天的项目.用到了 WebSocket.这里简单介绍一下. Socket与 WebSocket 简单说 Socket 与WebSocket 之间的关系 就和 Java 与Javascript关系一样.没关系. Socket 是 TCP/IP 协议中 传输层与应用层的传输数据用的编程接口.   WebSocket 是 基于HMTL5中浏览器 与 服务器之间 异步通信的方法. WebSocket 与 Ajax Ajax 是 利用 JS和XML,实现网页局部刷新的技术,只能单向从

UIView的alpha、hidden和opaque属性之间的关系和区别

转自:http://blog.csdn.net/wzzvictory/article/details/10076323 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/10076323 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢! UIView的这几个属性让我困惑了好一阵子,通过翻看官方文档和stackoverflow等网上资源,对它们有了一定理解,现分

线程与进程之间的关系和区别

线程共享的环境包括:进程代码段,进程的公有数据(利用这些数据,线程很容易实现相互间的通讯),进程打开的文件描述符,信号的处理器进程的当前目录和进程用户ID与进程组ID. 进程拥有这许多共性的同时,还拥有自己的个性.有了这些个性,线程才能实现并发性.这些个性包括: 1.线程ID.2.寄存器组的值.3.线程的堆栈(堆栈是保证线程独立运行所必需的).4.错误码的返回值.5.线程的信号屏蔽码(但所有的线程都共享同样的信号处理器).6.线程的优先级 在一个进程的线程共享堆区,而进程中的线程各自维持自己堆栈

jdk、jre、jvm三者之间的关系与区别

三者之间存在包含关系 JVM + 核心类库 = JRE JRE + java开发工具(javac.exe/jar.exe) = JDK 什么是JVM? Java Virtual Machine 即Java虚拟机 我们知道Java语言有一个独特的优点就是可以跨平台 像其它语言,比如C,我们要针对不同操作系统windos,mac……各出一套应用程序 而Java则可以做到一个软件在任何的操作系统中都能执行,这就是JVM的功劳. 本来我们编写的Java代码计算机还是不认识的,但是我们在每一个操作系统上都

module.exports与exports,export与export default之间的关系和区别

首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念. CommonJS模块规范 Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文件不可见. CommonJS规范规定,每个模块内部,module变量代表当前模块.这个变量是一个对象,它的exports属性(即module.exports)是对外的接口.加载某个模块,其实是加载该模块的module.ex

软件程序编程系统编程产品编程系统产品之间的关系和区别

程序-->编程产品--编程产品的概念 编程产品(Programming Product)可以被任何人运行.测试. 修复和扩展的程序. 它可以运行在多种操作系统平台上, 供多套数据使用. 程序-->编程产品--要求 程序必须按照普遍认可的风格来编写,特别是输入的范围和形式必须扩展,以适用于所有可以合理使用的基本算法. 对程序进行彻底测试, 确保它的稳定性和可靠性, 使其值得信赖. 这就意味着必须准备. 运行和记录详尽的测试用例库, 用来检查输入的边界和范围. 需要有完备的文档, 每个人都可以加以

exports与module.exports,export与export default 之间的关系和区别

首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念. CommonJS模块规范 Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文件不可见. CommonJS规范规定,每个模块内部,module变量代表当前模块.这个变量是一个对象,它的exports属性(即module.exports)是对外的接口.加载某个模块,其实是加载该模块的module.ex