Vraag Verschillen en dis / advanages tussen: Fast-CGI, CGI, Mod-PHP, SuPHP, PHP-FPM


Er zijn weinig verschillende php "wrappers" (?). Wat zijn verschillen tussen hen? Ik heb geprobeerd om wat te googlen, maar ik kan geen informatie vinden. (mod-php is niet googleable).

Waarom zou ik de ene boven de andere kunnen kiezen?


59
2017-11-20 10:31


oorsprong




antwoorden:


De vragen zijn een beetje vreemd, het is niet duidelijk of je alleen voor PHP vraagt ​​of dat je vraag algemener is.

Ik zal je een kort overzicht geven van de PHP kant.

Ten eerste de twee protocollen:

  • CGI-scripts is een manier om een ​​server-side-script uit te voeren wanneer een HTTP-verzoek wordt ontvangen; dit heeft niets met PHP te maken

  • FastCGI is een "betere CGI" - CGI staat bekend als traag, Fast CGI is een andere aanpak met veel snellere resultaten; dit heeft ook niets met PHP te maken.

Nu de PHP-gerelateerde dingen:

  • mod_php voert een PHP uit als Apache-module - dat wil zeggen dat PHP-aanvraag wordt uitgevoerd onder Apache-proces met alles wat daarbij hoort - Apache-processen worden gedefinieerd door Apache-configuratie, PHP wordt uitgevoerd met Apache-toestemming enz.

  • PHP-FPM is PHP's FastCGI-implementatie; PHP-FPM werkt als een stand-alone FastCGI-server en Apache maakt verbinding met de server via de module van Apache, meestal mod_fcgid of mod_fastcgi; Ik denk persoonlijk dat dit veel beter is dan draaien als mod_php, maar het hangt af van je vereisten en is ook een beetje ingewikkelder; in deze configuratie wordt toestemming, processen gerelateerd materiaal & alles uitgevoerd onder PHP-configuratie, PHP-gebruiker enz. & Apache maakt verbinding met PHP als met een server; in deze configuratie is het ook mogelijk om pool van PHP-servers te hebben en PHP-server op fysiek verschillende machines te hebben dan Apache. Ze zeggen dat dit bijna net zo snel is als het gebruik van de Apache-module en er zijn voordelen van een betere controle over de PHP-configuratie.

  • SuPHP - dit werd meestal gebruikt om een ​​aantal problemen van mod_php aan te pakken met betrekking tot rechten; met mod_php PHP-scripts worden uitgevoerd onder de Apache-gebruiker / -groep; mod_suphp kan de scripts in verschillende gebruikers uitvoeren; Ik heb het nooit gebruikt, PHP-FPM zou nu een veel betere keuze moeten zijn

Dus eigenlijk:

  • CGI, Fast-CGI zijn protocollen; CGI is traag, Fast-CGI is veel sneller
  • mod_php (met onderstrepingsteken) en PHP-FPM zijn twee basismethoden voor het uitvoeren van PHP
  • mod_SuPHP is vergelijkbaar met mod_php maar kan de gebruiker / groep veranderen waar het proces onder draait

121
2017-11-20 11:05



Misschien zal ik verduidelijken wat me inspireerde voor deze vraag. Ik heb zojuist een VPS gekregen met een ISPConfig-paneel (paneel Opensource voor admin-pagina's). Daar kan ik een PHP-versie kiezen voor server / side. En die worden daar vermeld. Dus lijkt het erop dat PHP-FPM kiest voor FastCGI met extra "wrappers"? - Gacek
Ik weet niet wat het ISPConfig-paneel echt gebruikt, maar PHP werkt zoals PHP-FPM betekent, dat PHP zijn eigen ingebouwde FastCGI-server start en naar verzoeken via het FastCGI-protocol zal luisteren. HTTP-server ontvangt verzoeken van internet, behandelt deze zoals gewoonlijk en in het geval dat een pagina moet worden uitgevoerd met behulp van PHP, wordt het verzoek het FastCGI-protocol overgedragen aan PHP en wordt het resultaat teruggestuurd naar de browser. Zie dat als een HTTP-server die staat tussen de browser en PHP (PHP-FPM FastCGI) -server. PHP-FPM is een implementatie van het FastCGI-protocol. - Aleš Krajník
@ AlešKrajník bedankt voor die uitgebreide uitleg. Nou, ik heb geprobeerd php uit te voeren als afzonderlijke gebruiker / groep. Dus ik begon met Su-exec en raakte een doodlopende weg en vervolgens adviseerden een paar mensen php-fpm dat je hebt uitgelegd. Ik ben echter nog steeds verward over de modules mog_cgi, mod_cgid, mod_fastcgi, mod_fcgi en hoe deze werken met php-fpm. Ook las ik in een andere tutorial dat ze mod_fcgid en mod_proxy_fcgi gebruikten. Hoe moeilijk het is om te begrijpen hoe alle stukjes bij elkaar komen. - David Okwii
@landed PHP-FPM binary maakt deel uit van elke PHP-distributie sinds 5.3.3 of 5.4.0 (vink dit aan: php-fpm.org), voor die specifieke PHP-versie. - Aleš Krajník
php-fpm draait helemaal om het verwijderen van initialisatiekosten. php-fpm pre-start verschillende php-processen, klaar om aanvragen te verwerken en laat ze slapen totdat er verzoeken binnenkomen - wat betekent dat het veel sneller kan reageren dan traditionele cgi, omdat php al draait wanneer verzoeken komen, in tegenstelling tot traditionele CGI, waar voor elke aanvraag een nieuw php-proces wordt gestart, sluit php-fpm het php-proces ook niet uit na het verwerken van aanvragen, maar blijven dezelfde processen hergebruiken. - met 0 overhead van start- en stopprocessen, antwoordt php-fpm veel sneller. start- en stopprocessen kost tijd. - hanshenrik