我正在尝试在macports上使用fpm安装php。我在某处读到fpm表示FastCGI进程管理器。这是否意味着fastcgi和fpm相同?如果它们相同,那么为什么我们要为PHP提供两个不同的macports变体,即 “ php5 + fastcgi”和 “ php5 + fpm”
我正在尝试在macports上使用fpm安装php。我在某处读到fpm表示FastCGI进程管理器。这是否意味着fastcgi和fpm相同?如果它们相同,那么为什么我们要为PHP提供两个不同的macports变体,即 “ php5 + fastcgi”和 “ php5 + fpm”
Answers:
FPM是一个过程管理器,用于管理PHP中的FastCGI SAPI(服务器API)。
基本上,它代替了诸如SpawnFCGI之类的东西。它自适应地生成FastCGI子级(意味着如果当前负载需要,则启动更多)。
否则,它与FastCGI之间没有太大的操作区别(从请求开始到结束的请求管道是相同的)。它只是在那里使实现起来更加容易。
SpawnFCGI
要生成的进程数,以及每个进程的PHP子级数。因此,生成具有100个子代的1个PHP进程与使用具有100个子代的FPM是相同的事情。但是,反之亦然。如果FPM被杀死(分段错误,无论如何),您的整个工作人员都会死亡。在SpawnFCGI中,如果其中一个进程死亡,则其余进程可以保持活动状态……因此,显然没有一个比另一个更好。不同的方法。推荐FPM并不是出于技术原因,而是因为它沿侧面核心保持(实际上是在其中)...
Anthony所说的是绝对正确的,但是我想补充一点,您的经验可能会显示出更好的性能和效率(由于不是fpm
-vs- fcgi
而是更多地是您的实现httpd
)。
例如,我有一个四核机器运行lighttpd
+ fcgi
一直很好哼唱。我升级到16核计算机以应对增长,两件事发生了爆炸:RAM使用率和段错误。我发现自己lighttpd
每30分钟重新启动一次,以保持网站正常运行。
我切换到php-fpm和nginx,RAM的使用量从> 20GB降至2GB。分段故障也消失了。经过一些研究,我了解到lighttpd和fcgi在负载下的多核计算机上相处不佳,并且在某些情况下还存在内存泄漏问题。
是因为比... php-fpm
更好fcgi
吗?不完全是,但怎么给你提供最基本php-fpm
似乎是一个整体heckuva很多比你如何通过服务更加高效fcgi
。
将PHP作为CGI运行意味着您基本上可以将Web可执行文件的位置告知Web服务器,并且服务器将运行该可执行文件
而
PHP FastCGI流程管理器(PHP-FPM)是PHP的替代FastCGI守护程序,它允许网站处理繁重的负载。PHP-FPM维护池(可以响应PHP请求的工作人员)来完成此任务。对于多用户PHP环境,PHP-FPM比传统的基于CGI的方法(例如SUPHP)要快。
但是,两者都有优点和缺点,应该根据其特定用例进行选择。
我发现关于fastcgi vs fpm的此链接上的信息对于选择在我的方案中使用哪个处理程序很有帮助。