PHP:FastCGI相对于mod_php有哪些优势?


Answers:


37

使用mod_php,每个Apache工作者都将整个PHP解释器加载到其中。因为Apache每个传入请求都需要一个工作进程,所以您很快就可以使用数百个Apache工作进程,每个工作进程都加载了自己的PHP解释器,从而消耗了大量内存。

(请注意,这并非完全正确,Apache worker_mpm允许您使用单个线程的Apache工作线程处理许多请求。但是,即使在2009年,由于可疑的PHP扩展线程问题,也不建议使用此方法来部署PHP。)

通过在fast_cgi模式下使用PHP(使用lighttpd包中的spawn-fcgi之类的东西)具有以下好处

  • 将PHP工作者的数量与传入连接的数量分开调整
  • 允许您将PHP Worker放置在其他服务器上,或在不更改Web层的情况下跨多个服务器进行扩展
  • 使您可以灵活地选择其他Web服务器,例如nginxlighttpd
  • 允许您在Web服务器上的其他安全域中运行PHP应用程序

5

与mod_php不同,FastCGI意味着php位与apache位不在同一进程中运行。在重启服务器或处理失控的应用程序时,这种分离可以具有一定的优势-在mod_php情况下,这意味着apache进程是“失控”的,但是在fastcgi下,这只是apache正在与之交谈的进程,因此不必关闭整个服务器。


4

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

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


它取决于此特定Apache httpd设置中使用的MPM。例如,使用MPM-itk(mpm-itk.sesse.net),可以使用mod_php并使脚本(或更好的是:httpd进程)在另一个用户的上下文中运行。
joschi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.