fastcgi和fpm有什么区别?

我正试图在macports上安装与FPM的PHP。 我在某处读到fpm意味着FastCGIstream程pipe理器。 这是否意味着fastcgi和fpm是一样的? 如果他们是相同的,那么为什么我们有两个不同的macports变种的PHP,即“php5 + fastcgi”“php5 + fpm”

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

基本上,它取代了像SpawnFCGI这样的需求 。 它自适应地产生FastCGI孩子(意思是在当前负载需要的情况下启动更多)。

否则,它与FastCGI之间的操作差别不大(从请求开始到结束的请求stream水线是相同的)。 只是在那里让实施更容易。

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

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

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

这是由于php-fpm比fcgi更好吗? 不是完全的,但你如何钩入php-fpm似乎是一个整体heckuva比你如何通过fcgi服务更有效率。