Nginx学习笔记3—FastCGI与CGI解释器的区别,及其工作原理
2012-10-06 21:18
435 查看
一、FastCGI是什么:是一个可伸缩、高速的在web server和脚本语言间通迅的接口
CGI工作原理:每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如php-cgi.exe),当CGI满足要求后,WEB服务器就杀死这个进程。
所以,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以 提供良好的性能、伸缩性、Fail- Over特性等等。
FastCGI的官方站点在http://www.fastcgi.com
FastCGI的工作原理是:
1、Web Server 启动时载入FastCGI进程管理器【PHP的FastCGI进程管理器是PHP-FPM(php-FastCGI Process Manager)】。
2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字(socket)两种方式启动。
3、当客户端请求到达Web Server时,Web Server将请求采用TCP协议或socket方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程php-cgi.exe)。Web
server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi.exe。
4、FastCGI子进程php-cgi.ex完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在 WebServer中)的下一个连接。 而在CGI中,php-cgi子进程在此便被退出了。
在上述情况中,你可以想象 CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构。使用FastCGI,所有这些 都只在进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作。
可以令PHP程序从原来的请求-启动-运行到请求-运行模式,大大提高了脚本的执行效率,减轻服务器的负荷。
二:PHP的FastCGI的优点:
1.php脚本运行速度更快,php解释程序被载入内存而不是每次需要时从存储器读取,极大提升了依靠脚本运行站点的性能。
2.需要使用的系统资源更少,由于服务器不用在每次需要时都载入php解释程序,你可以将站点的传输速度提升很多而不必增加cpu负担。
CGI工作原理:每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如php-cgi.exe),当CGI满足要求后,WEB服务器就杀死这个进程。
所以,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以 提供良好的性能、伸缩性、Fail- Over特性等等。
FastCGI的官方站点在http://www.fastcgi.com
FastCGI的工作原理是:
1、Web Server 启动时载入FastCGI进程管理器【PHP的FastCGI进程管理器是PHP-FPM(php-FastCGI Process Manager)】。
2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字(socket)两种方式启动。
3、当客户端请求到达Web Server时,Web Server将请求采用TCP协议或socket方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程php-cgi.exe)。Web
server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi.exe。
4、FastCGI子进程php-cgi.ex完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在 WebServer中)的下一个连接。 而在CGI中,php-cgi子进程在此便被退出了。
在上述情况中,你可以想象 CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构。使用FastCGI,所有这些 都只在进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作。
可以令PHP程序从原来的请求-启动-运行到请求-运行模式,大大提高了脚本的执行效率,减轻服务器的负荷。
二:PHP的FastCGI的优点:
1.php脚本运行速度更快,php解释程序被载入内存而不是每次需要时从存储器读取,极大提升了依靠脚本运行站点的性能。
2.需要使用的系统资源更少,由于服务器不用在每次需要时都载入php解释程序,你可以将站点的传输速度提升很多而不必增加cpu负担。
相关文章推荐
- Nginx学习笔记3—FastCGI与CGI解释器的区别,及其工作原理
- Nginx学习笔记3—FastCGI与CGI解释器的区别,及其工作原理
- FastCGI与CGI解释器的区别,及其工作原理
- FASTCGI与CGI解释器的区别,及其工作原理
- (基于Spring3)Spring学习笔记(二):BeanFactory 及其工作原理
- nginx学习笔记之一:nginx介绍及其编译安装
- 浅谈 Apache、Nginx及Tomcat之间的区别 (学习笔记)
- nginx 之cgi fastcgi.conf和fastcgi_params的区别
- CGI、服务器内置模块、FastCGI、php-fpm的区别和详解
- Python学习笔记(四)Python对象类型及其运算
- 扩展欧几里得算法及其应用——学习(复习)笔记
- nginx 学习笔记(二)nginx 配置相关
- Nginx学习笔记1—Nginx(Win32) 配置详解
- 学习笔记-几种RAID方式的区别
- μC/OS-II学习之:任务,信号量、邮箱、队列及其区别
- css学习笔记——三种样式表的使用及区别
- [python学习笔记]'i += x'和'i = i + x'的区别
- Nginx学习笔记-为什么选择Nginx
- nginx 源码学习笔记(七)——内存分配相关源码分析
- asp.net实现页面的一般处理程序(CGI)学习笔记