主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
文章目录
CGI本身可以看作是一种协议标准。它可以用任何符合接口标准的语言编写特定的协议,只要该语言具有标准的输入、输出和环境变量。比如PHP、Perl、TCL等。
事实上,如果你理解了以下概念,你就会理解本文要解释的问题。
CGI
CGI的全称为“公共网关接口&rdquo(公共网关接口),HTTP服务器与您或其他机器上的程序通信“谈话”其程序必须在网络服务器上运行的工具。
CGI本身可以看作是一种协议标准。它可以用任何符合接口标准的语言编写特定的协议,只要该语言具有标准的输入、输出和环境变量。比如PHP、Perl、TCL等。
快速CGI
Fastcgi就像一个长寿的CGI。它可以随时执行。只要它被激活,就不会每次都花时间进行fork(这是CGI最批评的fork-and-execute模式)。它还支持分布式计算,也就是说,fastcgi程序可以在web服务器以外的主机上执行,并接受来自其他web服务器的请求。
Fastcgi是一个独立于语言且可扩展的CGI开放扩展。它的主要行为是将CGI解释器进程保存在内存中并获得高性能。众所周知,CGI解释器的重复加载是CGI性能低下的主要原因。如果CGI解释器保留在内存中并接受fastcgi process manager的调度,它可以提供良好的性能、可扩展性和故障转移特性等。
Fastcgi也可以称为协议标准。例如,PHP FPM是一个支持解析PHP的fastcgi进程管理器/引擎。
Fastcgi是一个进程内应用程序,独立于核心web服务器运行,并提供比API更安全的环境。API将应用程序代码与核心web服务器链接,这意味着错误API中的应用程序可能会损坏其他应用程序或核心服务器。恶意API应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。
Fastcgi技术目前支持C/C++、Java、Perl、TCL、python、Smalltalk、ruby等语言。Apache、ISS和lighttpd等流行服务器上也提供了相关模块。
Fastcgi不依赖于任何web服务器的内部架构。因此,即使服务器技术发生变化,fastcgi仍然保持稳定。
在web服务器启动时加载fastcgi进程管理器(IIS ISAPI或Apache模块)
fastcgi进程管理器自行初始化,启动多个CGI解释器进程(可以看到多个PHP CGI),并等待来自web服务器的连接。
当客户端请求到达web服务器时,fastcgi进程管理器选择并连接到CGI解释器。web服务器将CGI环境变量和标准输入发送到fastcgi子流程PHP CGI。
fastcgi子进程完成处理后,会将同一连接的标准输出和错误信息返回到web服务器。当fastcgi子进程关闭连接时,请求处理完成。然后,fastcgi子进程等待并处理来自fastcgi进程管理器(在web服务器中运行)的下一个连接。在CGI模式下,PHP CGI在此退出。
在上述情况下,您可以想象CGI通常有多慢。对于每个web请求,PHP必须重新解析PHP.ini,重新加载所有扩展,并重新初始化所有数据结构。使用fastcgi,所有这些在流程启动时只发生一次。另一个好处是持久数据库连接可以工作。
因为它是一个多进程,所以它比CGI多线程占用更多的服务器内存。php cgi解释器每个进程消耗7到25兆的内存。将这个数字乘以50或100会占用大量内存。
nginx 0.8.46+PHP 5.2.14(fastcgi)服务器有30000个并发连接,10个nginx进程占用150m内存(15m*10=150m),64个PHP CGI进程占用1280M内存(20m*64=1280M)。加上系统本身消耗的内存,消耗的总内存小于2GB。如果服务器内存较小,则只能启动25个PHPCGI进程,因此PHPCGI消耗的总内存仅为5亿。
以上数据摘自nginx 0.8。X+PHP5.2.13(fastcgi)构建的web服务器是Apache(版本6)的十倍
PHP-CGI
PHP CGI更改PHP.ini的配置后,需要重新启动PHP CGI以使新的PHP ini生效。您无法顺利重新启动。
如果直接终止PHP CGI进程,PHP将不会运行(PHP FPM和spawn fcgi没有这个问题)。守护进程将顺利生成新的子进程。)
PHP-FPM
Php fpm是一个Php fastcgi管理器。它仅用于PHP,并且可以在中使用http://php-fpm.org/download 下载。
Php fpm实际上是Php源代码的一个补丁,旨在将fastcgi进程管理集成到Php包中。您必须将其修补到PHP源代码中,并在编译和安装PHP后使用它。
现在我们可以在最新PHP5.3.2的源代码树中下载直接集成PHPFPM的分支。据说PHP将被集成到下一个主版本中。与spawn fcgi相比,php fpm对CPU和内存的控制更好。此外,前者很容易崩溃,必须使用crontab进行监控,而php-fpm没有这样的问题。
PHP 5.3.3集成了PHP FPM,不再是第三方软件包。Php fpm提供了一种更好的Php进程管理方法,可以有效地控制内存和进程,并且可以平滑地重载Php配置。它比spawn-fcgi有更多的优势,因此它被正式包含在PHP中。带来–什么时候配置;enable FPM参数启用php FPM。
产卵FCGI
Spawn fcgi是一个通用的fastcgi管理服务器。它是lighttpd的一部分。许多人使用lighttpd的spawn fcgi进行fastcgi模式管理,但存在许多缺点。php fpm的出现在一定程度上缓解了一些问题,但php fpm的缺点是需要重新编译,这可能会给某些运行环境带来很多风险(请参阅)。Php fpm可以直接在PHP5.3.3中使用。
目前,spawn-fcgi已经成为一个独特的项目,它对于许多网站的配置更加稳定和方便。许多网站已经将它与nginx结合起来解决动态网页问题。
最新的lighttpd也不包括这个(http://www.lighttpd.net/search?q=Spawn -Fcgi),但可以在以前的版本中找到它。它包含在lighttpd-1.4.15(http://www.lighttpd.net/download/lighttpd-1.4.15.tar.gz ),spawn fcgi的当前下载地址为http://redmine.lighttpd.net/projects/spawn-fcgi ,最新版本为http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz 。
注意:最新的spawn fcgi可在lighttpd.net网站上搜索“繁殖FCGI”查找其最新发布地址。
Php fpm使用起来非常方便。配置在php-fpm.ini文件中,可以从php/SBIN/php-fpm执行启动和重启。更方便的是,修改php.ini后,可以直接使用php fpm reload进行加载。您可以修改和加载php.ini,而无需终止进程
结果表明,使用php fpm可以提高php的性能。php fpm控制的进程的CPU回收速度相对较慢,内存分配非常均匀。
由spawn fcgi控制的进程的CPU迅速下降,而内存分配是不均匀的。许多进程似乎是未分配的,而其他进程则占用了大量空间。这可能是由于流程任务分布不均造成的。这也会导致总体响应速度降低。php fpm的合理分配导致提到总体响应和任务的平均值。
总结:
Fastcgi是nginx和PHP之间的通信接口。接口的实际处理过程通过启动PHP FPM流程解析PHP脚本,即PHP FPM相当于一个动态应用服务器,从而实现PHP的nginx动态解析。因此,如果nginx服务器需要支持PHP解析,则需要在nginx.conf中添加PHP配置:将PHP脚本转发到fastcgi进程侦听的IP地址和端口(在PHP fpm.conf中指定)。同时,在安装PHP时,需要启用support fastcgi选项,编译并安装PHP FPM补丁/扩展,并启动PHP FPM进程,以解析nginx通过fastcgi转发的PHP脚本。
以上就是主机参考分享的关于 nginx服务器究竟是如何执行PHP项目的 的内容,部分内容来源自网络,不代表本站观点。
转载请注明:https://zhujicankao.com/?p=65033
这几篇文章你可能也喜欢:
- 如何使用Linux ttyload监控系统性能
- 如何使用docker自动维护和监控容器(Docker自动运行)
- 如何使用docker进行容器监控和警报处理(Docker网络监控)
- 如何使用docker进行应用程序监控和日志管理(Docker应用程序日志存储位置)
- 如何使用docker进行容器监控和性能分析(Docker监控系统)
本文由主机参考刊发,转载请注明:nginx服务器究竟是如何执行PHP项目的 https://zhujicankao.com/65033.html
评论前必须登录!
注册