VPS参考测评推荐
专注分享VPS主机优惠信息
衡天云优惠活动
华纳云最新优惠促销活动
jtti最新优惠促销活动

nginx服务器究竟是如何执行PHP项目的

locvps
主机参考: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特性

Fastcgi与语言无关

Fastcgi是一个进程内应用程序,独立于核心web服务器运行,并提供比API更安全的环境。API将应用程序代码与核心web服务器链接,这意味着错误API中的应用程序可能会损坏其他应用程序或核心服务器恶意API应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。

Fastcgi技术目前支持C/C++、Java、Perl、TCL、python、Smalltalkruby等语言。Apache、ISS和lighttpd等流行服务器上也提供了相关模块。

Fastcgi不依赖于任何web服务器的内部架构。因此,即使服务器技术发生变化,fastcgi仍然保持稳定。

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,所有这些在流程启动时只发生一次。另一个好处是持久数据库连接可以工作。

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自己的fastcgi管理器。

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中。带来&ndash什么时候配置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与spawn-CGI的比较

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的合理分配导致提到总体响应和任务的平均值。

总结:

&nbsp

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

这几篇文章你可能也喜欢:

本文由主机参考刊发,转载请注明:nginx服务器究竟是如何执行PHP项目的 https://zhujicankao.com/65033.html

【腾讯云】领8888元采购礼包,抢爆款云服务器 每月 9元起,个人开发者加享折上折!
打赏
转载请注明原文链接:主机参考 » nginx服务器究竟是如何执行PHP项目的
主机参考仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决!请查阅:特别声明

评论 抢沙发

评论前必须登录!