fastcgi和fpm有什么区别?

时间:2010-12-24 12:11:19

标签: php macos fastcgi macports

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

3 个答案:

答案 0 :(得分:88)

FPM是一个用PHP管理FastCGI SAPI(服务器API)的流程管理器。

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

否则,它与FastCGI之间的操作差别不大(从请求开始到结束的请求管道是相同的)。它就是为了让它更容易实现。

答案 1 :(得分:50)

安东尼说的绝对正确,但我想补充一点,你的经验可能会表现出更好的表现和效率(不是fpm - vs - fcgi,而是更多实施httpd)。

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

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

归因于php-fpm是否优于fcgi?并非完全如此,但你如何挂钩php-fpm似乎比通过fcgi服务的方式更有效率。

答案 2 :(得分:2)

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

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

但是,两者都有优点和缺点,应该根据其特定用例进行选择。

我发现fastcgi vs fpm的此链接上的信息对于选择在我的方案中使用哪个处理程序很有帮助。