首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dis/advanages :快速CGI,CGI,Mod,SuPHP,PHP

dis/advanages :快速CGI,CGI,Mod,SuPHP,PHP
EN

Server Fault用户
提问于 2014-11-20 10:31:22
回答 1查看 126.8K关注 0票数 103

很少有不同的php“包装器”(?)。他们之间有什么不同?试图谷歌一些,但似乎找不到信息。(mod不是googleable)。

我为什么要选择一个而不是另一个呢?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2014-11-20 11:05:58

CGI和FastCGI是两个不特定于PHP的协议:

  • CGI脚本是一种如何运行服务器端脚本的方法(不仅仅是PHP!)当HTTP请求到达时。在这个设置中,web服务器为每个传入的请求启动一个新的CGI进程,造成了巨大的性能开销。
  • FastCGI是一个“更好的CGI”--为了解决CGI的局限性,FastCGI作为服务器运行(TCP或UNIX),这样就可以在请求之间重用资源。

启用PHP的PHP服务器可以配置如下:

  • 国防部_php是一个运行PHP的Apache模块。在这个设置中,PHP请求是在Apache进程下处理的,它包含一切内容: PHP进程是在Apache配置中定义的,PHP是在Apache用户和权限下运行的。
  • undefined是PHP的FastCGI实现。在此设置中,PHP作为独立的FastCGI服务器运行,Apache使用FastCGI模块(如mod_fcgidmod_fastcgimod_proxy_fcgi (Apache2.4+))与其连接。在此配置中,权限、与进程相关的内容&其他一切都由PHP服务器控制。性能与mod_php相当。
  • SuPHP --这是用来解决与权限相关的mod_php的一些缺点:使用mod_php,PHP脚本在Apache /组下运行,但是mod_suphp可以作为不同的用户运行脚本。suPHP不再被维护,不应该被使用。
  • CGI/FastCGI -我根据评论中的一个问题添加了这个。在不了解设置细节的情况下,PHP可以使用任何其他FastCGI实现作为FastCGI服务器运行--如另一个问题中所解释的那样。我不使用这个设置,也看不到PHP的任何好处。
  • CGI也可以作为good -ol的CGI脚本运行,但除了与一些非常过时的环境兼容之外,我无法想象有一个好的用例。

关于这些不同方法的优缺点,我只谈mod_php和PHP,包括两个主要的用例:

  • 在某些Docker设置中,mod_php可能很有用,您希望在其中交付一个运行启用PHP的web服务器的容器。实际上,所有操作都是作为单个进程运行的,这使得Docker容器配置更加容易。另一方面,在带有best服务器的单个容器中运行PHP服务器需要使用监督%d、高级bash脚本或其他方法进行流程编排,这与编写Docker容器的最佳实践背道而驰。
  • PHP是一种更好地分离关注点的更强大的方法,因此PHP服务器可以被配置,(性能-)与FPM服务器分开调优和维护。这还允许在池或与run服务器不同的机器上运行PHP服务器。如前所述,对于Docker容器,建议在本例中单独使用PHP和webserver容器,从而使配置更加复杂(功能更强大)。PHP方法也是将nginx way服务器作为其PHP模块的唯一方法,AFAIK并不存在。

在这里可以找到上述两种方法的Docker实现:

该实现旨在与我的Kubernetes集群中的一些遗留项目和新项目一起工作。请随意使用它。

因此,TLDR:

  • CGI,FastCGI是协议;CGI慢,FastCGI快得多。
  • mod_php和PHP是运行PHP的两种主要方式。
  • mod_SuPHP是一种用来解决mod_php缺点的方法。它已经过时了,应该使用PHP。
票数 192
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/645755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档