Ik probeer php te installeren met fpm op macports. Ik heb ergens gelezen dat fpm FastCGI process manager betekent. Betekent dit dat fastcgi en fpm hetzelfde zijn? Als ze hetzelfde zijn, waarom hebben we dan twee verschillende macports-varianten voor php namelijk?
“php5 +fastcgi”en
“php5 +fpm”
Antwoord 1, autoriteit 100%
FPMis een procesmanager om de FastCGI SAPI (Server API) te beheren in PHP.
Kortom, het vervangt de behoefte aan iets als SpawnFCGI. Het spawnt de FastCGI-kinderen adaptief (wat betekent dat er meer moeten worden gestart als de huidige belasting dit vereist).
Anders is er niet veel verschil tussen de werking en FastCGI (de aanvraagpijplijn van het begin van het verzoek tot het einde is hetzelfde). Het is er alleen om de implementatie ervan gemakkelijker te maken.
Antwoord 2, autoriteit 64%
Wat Anthony zegt is absoluut correct, maar ik wil eraan toevoegen dat uw ervaring waarschijnlijk veel betere prestaties en efficiëntie zal laten zien (vanwege niet fpm
-vs-fcgi
maar meer voor de implementatie van uw httpd
).
Ik had bijvoorbeeld een quad-core-machine met lighttpd
+ fcgi
die goed zoemde. Ik heb geüpgraded naar een 16-core machine om de groei aan te kunnen, en twee dingen explodeerden: RAM-gebruik en segfaults. Ik merkte dat ik lighttpd
elke 30 minuten opnieuw opstartte om de website up-to-date te houden.
Ik schakelde over naar php-fpm en nginx en het RAM-gebruik daalde van >20GB naar 2GB. Segfaults verdwenen ook. Na wat onderzoek te hebben gedaan, kwam ik erachter dat lighttpd en fcgi niet goed met elkaar overweg kunnen op multi-core machines onder belasting, en in bepaalde gevallen ook problemen hebben met geheugenlekken.
Komt dit doordat php-fpm
beter is dan fcgi
? Niet helemaal, maar hoeje inhaakt op php-fpm
lijkt een heel stuk efficiënter te zijn dan hoe je serveert via fcgi
.
Antwoord 3, autoriteit 5%
PHP draaien als een CGI betekent dat u uw webserver in feite de locatie van het uitvoerbare PHP-bestand vertelt, en de server voert dat uitvoerbare bestand uit
terwijl
PHP FastCGI Process Manager (PHP-FPM) is een alternatieve FastCGI-daemon voor PHP waarmee een website zware belastingen kan verwerken. PHP-FPM onderhoudt pools (werknemers die kunnen reageren op PHP-verzoeken) om dit te bereiken. PHP-FPM is sneller dan traditionele op CGI gebaseerde methoden, zoals SUPHP, voor PHP-omgevingen met meerdere gebruikers
Er zijn echter voor- en nadelen aan beide en men moet kiezen op basis van hun specifieke gebruik.
Ik vond op deze link informatie over fastcgi vs fpmbehoorlijk behulpzaam bij het kiezen van de handler die ik in mijn scenario moet gebruiken.