cletus Asked: 2009-05-10 18:35:34 +0800 CST2009-05-10 18:35:34 +0800 CST 2009-05-10 18:35:34 +0800 CST PHP:FastCGI 相对于 mod_php 的优势是什么? 772 最近有人建议我将 FastCGI 与 PHP 一起使用。现在我去了 FastCGI 页面并阅读了它,但我真的不明白它的优点是什么。 performance php apache-2.2 fastcgi mod-php 3 个回答 Voted Best Answer Dave Cheney 2009-05-10T19:14:43+08:002009-05-10T19:14:43+08:00 使用 mod_php,每个 Apache 工作者都加载了整个 PHP 解释器。因为 Apache 每个传入请求都需要一个工作进程,所以您很快就会使用数百个 Apache 工作人员,每个工作人员都加载了自己的 PHP 解释器,从而消耗大量内存。 (注意,这并不完全正确,Apacheworker_mpm允许您使用单线程 Apache 工作线程处理许多请求。但是,即使在 2009 年,由于 PHP 扩展存在可疑的线程问题,这也不是部署 PHP 的推荐方式。) 通过在 fast_cgi 模式下使用 PHP(使用lighttpd 包中的spawn-fcgi之类的东西)具有以下好处 将 PHP 工作人员的数量与传入连接的数量分开调整 允许您将 PHP 工作人员放在不同的服务器上,或者在不更改 Web 层的情况下跨多个服务器进行扩展 让您可以灵活地选择不同的 Web 服务器,例如nginx或lighttpd 允许您在 Web 服务器上的不同安全域中运行 PHP 应用程序 pjz 2009-05-10T18:50:23+08:002009-05-10T18:50:23+08:00 FastCGI 意味着 php 位与 apache 位不在同一进程中运行,这与 mod_php 不同。在重新启动服务器或处理失控的应用程序时,这种分离可能具有一些明显的优势 - 在 mod_php 的情况下,这意味着它是“失控”的 apache 进程,但在 fastcgi 下它只是 apache 正在与之交谈的进程,所以不必关闭整个服务器。 Martin C. 2009-05-10T23:43:37+08:002009-05-10T23:43:37+08:00 另一个尚未提及的优点是,使用mod_fcgid(这是在 Apache 上使用 FastCGI 的较新实现)和 suexec,您可以实现不同 vhost 使用不同 Linux 用户执行的设置,这在共享主机方案中可能是一个真正的安全优势. 使用 mod_php,所有虚拟主机共享同一个用户,即 Apache 的用户。这可能会导致安全问题。
使用 mod_php,每个 Apache 工作者都加载了整个 PHP 解释器。因为 Apache 每个传入请求都需要一个工作进程,所以您很快就会使用数百个 Apache 工作人员,每个工作人员都加载了自己的 PHP 解释器,从而消耗大量内存。
(注意,这并不完全正确,Apache
worker_mpm
允许您使用单线程 Apache 工作线程处理许多请求。但是,即使在 2009 年,由于 PHP 扩展存在可疑的线程问题,这也不是部署 PHP 的推荐方式。)通过在 fast_cgi 模式下使用 PHP(使用lighttpd 包中的spawn-fcgi之类的东西)具有以下好处
FastCGI 意味着 php 位与 apache 位不在同一进程中运行,这与 mod_php 不同。在重新启动服务器或处理失控的应用程序时,这种分离可能具有一些明显的优势 - 在 mod_php 的情况下,这意味着它是“失控”的 apache 进程,但在 fastcgi 下它只是 apache 正在与之交谈的进程,所以不必关闭整个服务器。
另一个尚未提及的优点是,使用
mod_fcgid
(这是在 Apache 上使用 FastCGI 的较新实现)和 suexec,您可以实现不同 vhost 使用不同 Linux 用户执行的设置,这在共享主机方案中可能是一个真正的安全优势.使用 mod_php,所有虚拟主机共享同一个用户,即 Apache 的用户。这可能会导致安全问题。