CGI 和 PHP 模块版本之间的差异

CGI 和 PHP 模块版本之间的差异

作者:云资讯    浏览次数:195    2021-07-08 16:32:26

PHP 与 HTML 有很高的亲和力,是目前非常流行的网站制作语言。因此,即使在租用服务器上,PHP 几乎可以用于所有服务。

但是,实际上 PHP 有两种类型,“CGI 版”和“模块版”。在这里,我想简单说明一下两者的区别。使用哪个租用服务器在官网的功能列表和常见问题中经常有描述。

CGI版

CGI 版本,也称为可执行文件格式,在与 Web 服务器不同的进程中运行。这样做的第一个优势是安全性。每个运行 CGI(PHP 版本)的用户都与运行 Web 服务器本身的用户不同(分离)。因此,不存在意外干扰其他用户的风险。

另一方面,缺点是它作为独立于Web服务器的进程运行,因此每次执行都需要内存负载,并且处理速度比模块版本慢。

为了解决处理速度问题的FastCGI也存在规范,根据不同的租赁服务器上也有已经采用了这种FastCGI的一个地方。

模块版本

模块化版本与 CGI 版本相反,后者是一种在 Web 服务器进程中运行 PHP 的方式。现在很多租用服务器都使用Apache作为他们的Web服务器,所以模块化版本通常是指Apache的模块化版本。

但是,由于 PHP 在运行 Web 服务器的用户(root 权限等)上运行,因此存在多个用户共享服务器上的安全性问题。因此,模块版本有一个名为“安全模式”的设置,以防止用户之间的文件干扰。

模块版的另一个优点是PHP是在web服务器的进程中执行的,所以运行速度比CGI版快。

大部分租用服务器都是CGI版

CGI 和模块各有优缺点,但共享租用服务器很可能采用 CGI 版本。 * 然而,近年来,使用模块版本的服务数量逐渐增加。

除了安全问题,CGI 似乎还有一个原因,就是很容易衡量每个用户的进程负载(=很容易找到过载的用户)。

参考:PHP+WordPress应用实例中模块版本与CGI版本对比——小篇幅

使用 FastCGI / 模块版本的服务

如上所述,PHP 可以通过使用模块版本或即使在 CGI 版本中使用“FastCGI”来加速。

最后,我想介绍一下哪个租用服务器正在采取此类加速措施。请注意,仅列出了典型服务。

首先从个人租用服务器来介绍。

  • X 服务器:FastCGI 适用于所有计划
  • 棒糖!: 模块版本适用于标准及以上计划
  • Sakura:使用顶级Business Pro Plan,您可以随心所欲地在CGI版本和模块版本之间切换。

其次是为企业服务。

  • Sick Score:FastCGI 适用于所有计划
  • WebArena SuiteX:同时支持模块和CGI版本(部分目录受限)
  • CPI:支持模块化和 CGI​​ 版本

* 严格来说,CPI 不是普通的 Apache 版本模块,而是一个原始模块。但是功能是一样的,用法和Apache版本是一样的。

如果您打算在负载较重的情况下使用 CGI,我们建议您使用包含 PHP 加速的服务。