Fast cgi 和 fpm 之间的区别是什么?

我试图在 macport 上安装具有 fpm 的 php。我在什么地方读到过 fpm 的意思是 FastCGI 进程管理器。这是否意味着 fast cgi 和 fpm 是相同的?如果它们是相同的,那么为什么我们有两个不同的 macport 变体,即 php “ php5 + fastcgi”“ php5 + fpm”

145660 次浏览

FPM 是在 PHP 中管理 FastCGI SAPI (Server API)的进程管理器。

基本上,它取代了对 SpawnFCGI之类的东西的需求。它自适应地生成 FastCGI 子代(这意味着如果当前负载需要它,就会启动更多的子代)。

否则,它与 FastCGI 之间的操作没有太大区别(从请求开始到结束的请求管道是相同的)。它的存在只是为了使实现更加容易。

Anthony 说的完全正确,但我想补充的是,你的经验可能会显示出更好的性能和效率(不是由于 fpm-vs-fcgi,而是更多地由于你的 httpd的实现)。

例如,我有一台运行 lighttpd + fcgi的四核机器,它运行得很好。为了应对增长,我升级到了一台16核的机器,有两个问题突然出现: RAM 使用量和 Segfault。我发现自己每隔30分钟重新启动 lighttpd以保持网站正常运行。

我切换到 php-fpm 和 nginx,RAM 使用量从 > 20GB 下降到2GB。电源插座也消失了。在做了一些研究之后,我了解到 lighttpd 和 fcgi 在负载下的多核计算机上处理不好,在某些情况下还存在内存泄漏问题。

这是因为 php-fpmfcgi好吗?不完全,但 怎么做你钩到 php-fpm似乎是一个整体海库瓦更有效率比你如何通过 fcgi服务。

将 PHP 作为 CGI 运行意味着您基本上告诉您的 Web 服务器 PHP 可执行文件的位置,并且服务器运行该可执行文件

然而呢

PHP FastCGI 进程管理器(PHP-FPM)是 PHP 的另一个 FastCGI 守护进程,它允许网站处理繁重的负载。PHP-FPM 维护池(可以响应 PHP 请求的工作者)来完成这项任务。对于多用户 PHP 环境,PHP-FPM 比传统的基于 CGI 的方法(如 SUPHP)更快

然而,两者都有利有弊,人们应该根据自己的特定用例进行选择。

我发现关于 Fast cgi 与 fpm的这个链接的信息对于选择在我的场景中使用哪个处理程序非常有帮助。