PHP:FastCGI比mod_php有什么优势?

最近有人build议我使用FastCGI和PHP。 现在我进入FastCGI页面阅读,但我不明白它的优点。

每个Apache worker使用mod_php将整个PHP解释器加载到它。 由于Apache每个传入请求都需要一个工作进程,因此您可以快速结束数百个正在使用的Apache工作,每个工作都有自己的PHP解释器加载,耗费大量内存。

(请注意,这并不完全正确,Apache的worker_mpm允许您使用单个线程化Apache worker来处理多个请求,但即使在2009年,由于可疑的PHP扩展的线程问题,也不推荐部署PHP。 )

通过在fast_cgi模式下使用PHP(使用lighttpd包中的spawn-fcgi )具有以下优点

  • 调整PHP工作人员的数量与传入连接的数量分开
  • 允许您将PHP工作人员安装在不同的服务器上,或者跨多台服务器进行扩展,而无需更改您的Web层
  • 使您可以灵活地select不同的Web服务器,如nginx或lighttpd
  • 允许您在Web服务器上的不同安全域中运行PHP应用程序

FastCGI意味着php位不像apache位一样运行,与mod_php不同。 这种分离在重启服务器或处理失控应用程序方面可以有一些明显的优势 – 在mod_php的情况下,这意味着它是apache进程的“失控”,但在fastcgi下它只是apache正在交谈的一个进程,所以整个服务器不必被取下。

尚未提及的另一个优点是,使用mod_fcgid (这是在Apache上使用FastCGI的较新实现)和suexec,您可以实现不同虚拟主机使用不同Linux用户执行的设置,这可以在共享主机中实现真正的安全优势SZENARIO。

使用mod_php,所有虚拟主机共享同一个用户,这是Apache的用户。 这可能会导致安全问题。