有关CGI、FastCGI和PHP-fpm的简述
来源:互联网 发布:淘宝怎样做充值话费 编辑:程序博客网 时间:2024/06/11 02:33
1、CGI概念
CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。
在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。
只要某种语言具有标准输入、输出和环境变量,如perl、php、C等,就可以用来编写CGI程序。
工作原理:
1.浏览器通过HTML表单或超链接请求指向一个CGI应用程序的URL。2.服务器收发到请求。3.服务器执行指定CGI应用程序。4.CGI应用程序执行所需要的操作,通常是基于浏览者输入的内容。5.CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。6.网络服务器把结果返回到浏览器中。
2.FastCGI
Fastcgi是CGI的更高级的一种方式,是用来提高CGI程序性能的。
FastCGI就像是一个常驻(long-live)型的CGI程序,它可以一直运行着。FastCGI程序也可以和Web服务器分别部署在不同的主机上,它还可以接受来自其他Web服务器的请求。
3、PHP-fpm (PHP-FastCGI Process Manager)
他是一个实现了Fastcgi协议的程序,用来管理Fastcgi起的进程的,即能够调度php-cgi进程的程序。
4、CGI相较于Fastcgi而言其性能瓶颈(转自知乎)
CGI针对每个http请求都是fork一个新进程来进行处理,处理过程包括解析php.ini文件,初始化执行环境等,然后这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才fork的进程也随之退出。 如果下次用户还请求动态资源,那么web服务器又再次fork一个新进程,周而复始的进行。
Fastcgi则会先fork一个master,解析配置文件,初始化执行环境,然后再fork多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是Fastcgi的对进程的管理。大多数Fastcgi实现都会维护一个进程池。
master和worker进程: master进程只有一个,负责监听端口,接收来自web server的请求。 worker 有一到多个,具体数量会在fpm的配置中定义。 每个进程内部都会嵌入PHP解析器,是PHP代码执行的地方。即worker来处理PHP代码。 master监听端口是 9000,通过Nginx方向代理9000端口。
5、FastCGI与CGI特点:
对于CGI来说,每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展,并重初始化全部数据结构。而使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。
由于FastCGI是多进程,所以比CGI多线程消耗更多的服务器内存,php-cgi解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数
- 有关CGI、FastCGI和PHP-fpm的简述
- CGI、FastCGI和php-fpm的区别
- CGI,fastcgi和php-fpm
- CGI、FastCGI、PHP-CGI和PHP-FPM
- cgi ,fastcgi,PHP-FPM和php-cgi
- CGI、FastCGI和php-fpm的概念和区别
- CGI,FastCGI和PHP-FPM之间的关系和区别。
- cgi && fastcgi && php-fpm
- CGI/FastCgi/PHP-FPM
- CGI、FastCGI和PHP-FPM关系图解
- CGI、FastCGI和PHP-FPM关系图解
- CGI、FastCGI和PHP-FPM关系图解
- CGI 和fastcgi一级php-fpm
- CGI、FastCGI和PHP-FPM关系图解
- CGI、FastCGI和PHP-FPM关系图解
- CGI、FastCGI和PHP-FPM关系图解
- CGI,FASTcgi,PHP-fpm之间的关系
- CGI、FastCGI、PHP-CGI和PHP-FPM 概念区分
- 打印平行四边形
- Mybatis一级和二级缓存正确解答
- 数据库索引的实现原理
- 码云git
- Node.js的全局对象和全局变量
- 有关CGI、FastCGI和PHP-fpm的简述
- github 建静态博客
- 如何让你的SQL运行得更快
- 【MD】yum install --downloadonly 下载依赖包、salt离线安装探索
- Android Studio 中的类文件前标识图标显示为 j 而不是C,代码的左边没有了颜色显示,布局文件的引用也没有蓝色显示,代码大部分变成了白色。项目能正常编译运行,且敲代码时也没有了提示的问题
- java反射的基本概念和简单应用
- 蓝桥杯--除去立方数
- 带L1正则化项的近似梯度下降
- 回归分析