130

我正在尝试在 macports 上使用 fpm 安装 php。我在某处读到 fpm 表示 FastCGI 进程管理器。这是否意味着 fastcgi 和 fpm 相同?如果它们相同,那么为什么我们有两个不同的 php macports 变体,即 “php5 +fastcgi”“php5 +fpm”

4

3 回答 3

96

FPM是一个进程管理器,用于管理 PHP 中的 FastCGI SAPI(服务器 API)。

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

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

于 2010-12-24T12:48:55.807 回答
61

Anthony 所说的绝对正确,但我想补充一点,您的经验可能会显示出更好的性能和效率(不是由于fpm-vs-fcgi而是更多地由于您的httpd.

例如,我有一台四核机器运行lighttpd+fcgi嗡嗡声很好。我升级到 16 核机器以应对增长,两件事爆发了:RAM 使用和段错误。我发现自己lighttpd每 30 分钟重新启动一次以保持网站正常运行。

我切换到 php-fpm 和 nginx,RAM 使用量从 >20GB 下降到 2GB。段错误也消失了。在做了一些研究之后,我了解到 lighttpd 和 fcgi 在负载下的多核机器上不能很好地相处,并且在某些情况下还会出现内存泄漏问题。

这是因为php-fpm比 更好fcgi吗?不完全是,但是你如何进入php-fpm似乎比你通过fcgi.

于 2011-08-16T10:29:50.650 回答
5

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

然而

PHP FastCGI 进程管理器 (PHP-FPM) 是 PHP 的替代 FastCGI 守护程序,它允许网站处理繁重的负载。PHP-FPM 维护池(可以响应 PHP 请求的工作人员)来完成此操作。对于多用户 PHP 环境,PHP-FPM 比传统的基于 CGI 的方法(例如 SUPHP)更快

但是,两者各有利弊,应根据其特定用例进行选择。

我在这个链接上找到了有关fastcgi vs fpm的信息,这对于选择在我的场景中使用哪个处理程序非常有帮助。

于 2020-05-19T20:11:35.280 回答