web-dev-qa-db-fra.com

Quelle est la différence entre fastcgi et fpm?

J'essaye d'installer php avec fpm sur macports. J'ai lu quelque part que fpm signifie gestionnaire de processus FastCGI. Est-ce que cela signifie que fastcgi et fpm sont identiques? Si elles sont identiques, pourquoi avons-nous deux variantes différentes de macports pour php, à savoir "php5 + fastcgi" et "php5 + fpm"

107
Deepan Chakravarthy

FPM est un gestionnaire de processus chargé de gérer FastCGI SAPI (API de serveur) en PHP.

Fondamentalement, il remplace le besoin de quelque chose comme SpawnFCGI . Il engendre les enfants FastCGI de manière adaptative (ce qui signifie en lancer plus si la charge actuelle le nécessite).

Sinon, il n'y a pas beaucoup de différence de fonctionnement entre FastCGI et lui (le pipeline de demandes du début à la fin est le même). C'est juste là pour faciliter la mise en œuvre.

89
ircmaxell

Ce que Anthony dit est tout à fait correct, mais j'aimerais ajouter que votre expérience démontrera probablement de bien meilleures performances et efficacité (grâce à fpm- vs -fcgi mais davantage à la mise en œuvre. de votre httpd).

Par exemple, une machine quadricœur exécutant lighttpd + fcgi fredonnait bien. Je suis passé à une machine à 16 cœurs pour faire face à la croissance et deux choses ont explosé: RAM utilisation et segfaults. Je me suis retrouvé à redémarrer lighttpd toutes les 30 minutes pour conserver le site Web. up.

Je suis passé à php-fpm et nginx, et RAM est passée de> 20 Go à 2 Go. Segfaults a également disparu. Après quelques recherches, j'ai appris que lighttpd et fcgi ne s'entendaient pas bien. sur des machines multi-core en charge, et ont également des problèmes de fuite de mémoire dans certains cas.

Est-ce dû à php-fpm étant meilleur que fcgi? Pas tout à fait, mais comment vous vous connectez à php-fpm semble être bien plus efficace que votre façon de servir via fcgi.

51
spacemonkey