Nginx高性能Web服务器:Nginx与PHP(FastCGI)的安装、配置与优化(第四章)

网友投稿 896 2023-03-07

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Nginx高性能Web服务器:Nginx与PHP(FastCGI)的安装、配置与优化(第四章)

1、FastCGI

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等。

FastCGI的工作原理是:

1FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi进程)并等待来自Web Server的连接。在本文中,采用PHP-FPM进程管理器启动多个php-cgi FastCGI进程。启动php-cgi FastCGI进程时,可以配置以TCPUNIX套接字两种方式启动。  2)当客户端请求到达web服务器(Nginx)时,web服务器将请求采用TCP协议或UNIX套接字方式转发到FastCGIFastCGI主进程选择并连接到一个CGI解释器(子进程)。Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi3FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回web服务器(Nginx)。当FastCGI子进程关闭连接时,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器的下一个连接。而在一般的普通CGI模式中,php-cgi在此便退出了。所以,你可以想象普通的CGI模式有多慢。每一个web请求php都必须重新解析php.ini、重新载入全部扩展并重新初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent databaseconnection)可以工作。

(1)FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi进程)并等待来自Web Server的连接。在本文中,采用PHP-FPM进程管理器启动多个php-cgi FastCGI进程。启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字两种方式启动。 (2)当客户端请求到达web服务器(Nginx)时,web服务器将请求采用TCP协议或UNIX套接字方式转发到FastCGI,FastCGI主进程选择并连接到一个CGI解释器(子进程)。Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi(3)FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回web服务器(Nginx)。当FastCGI子进程关闭连接时,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器的下一个连接。而在一般的普通CGI模式中,php-cgi在此便退出了。所以,你可以想象普通的CGI模式有多慢。每一个web请求php都必须重新解析php.ini、重新载入全部扩展并重新初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent databaseconnection)可以工作。

FastCGI的优点:

1PHP脚本运行速度更快。PHP解释程序被载入内存而不用每次需要时从存储器读取,此举极大提升了依靠脚本运行站点的性能。2)须要使用的系统资源更少。由于服务器不用在每次需要时都载入PHP解释程序,你可以将站点的传输速度提升很多而不必增加CPU负担。3)不需要对现有的代码作任何改变。运行在Apache+PHP上的程序,无须修改即可适用于PHPFastCGI

(1)PHP脚本运行速度更快。PHP解释程序被载入内存而不用每次需要时从存储器读取,此举极大提升了依靠脚本运行站点的性能。(2)须要使用的系统资源更少。由于服务器不用在每次需要时都载入PHP解释程序,你可以将站点的传输速度提升很多而不必增加CPU负担。(3)不需要对现有的代码作任何改变。运行在Apache+PHP上的程序,无须修改即可适用于PHP的FastCGI。

上一篇:Nginx高性能Web服务器:Nginx与jsp、asp.net、perl的安装与配置(第五章)
下一篇:linux运维学习线路图(linux运维基础知识)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~