PHP-FPM (FastCGI Process Manager) is de populairste alternatieve implementatie van PHP FastCGI. PHP (een zelfverwijzend acroniem van “PHP: Hypertext Preprocessor”) is een van de populairste open source programmeertalen op het internet, die wordt gebruikt voor webontwikkeling in platforms zoals Magento, WordPress en Drupal. Oorspronkelijk werd PHP ontworpen voor voorbewerking van platte tekst in UTF-8.
PHP (in 1995 ontwikkeld door Rasmus Lerdorf) was een van de eerste programmeertalen die in HTML-code kon worden opgenomen zonder externe bestanden aan te roepen. Deze algemene, aan de serverzijde uitgevoerde scriptingtaal is steeds verder geëvolueerd en wordt nu door elk besturingssysteem of webplatform ondersteund. PHP wordt nog steeds verder doorontwikkeld en wordt uitgebracht onder de PHP-licentie, die niet compatibel is met de GNU General Public License vanwege beperkingen aan het gebruik van het begrip ‘PHP’.
Wat is PHP-FPM en welke functies zijn er?
PHP-FPM is de populairste alternatieve implementatie van PHP FastCGI. PHP-FPM biedt extra functies die heel waardevol zijn voor websites met veel bezoekersverkeer. Dit zijn er enkele van de belangrijkste kenmerken:
- Geavanceerd beheer waarmee processen gemakkelijk kunnen worden gestart en gestopt.
- Gebruikers kunnen worden gestart met een eigen uid/gid/chroot/environment en php.ini. Dit komt in de plaats van safe_mode.
- Logging naar stdout en stderr.
- Noodherstart wanneer de opcode-cache per ongeluk wordt beschadigd.
- Ondersteuning voor versnelde uploads.
- Configuratie van de slowlog-variabele om te detecteren welke functies meer tijd dan normaal nodig hebben voor de uitvoering.
- Gebaseerd op php.ini-configuratiebestanden.
- Verbeteringen ten opzichte van FastCGI, zoals fastcgi_finish_request(), een speciale functie om een proces te stoppen en alle data te downloaden terwijl een langer durend proces wordt voortgezet (bijvoorbeeld videoconversie of verwerking van statistieken).
- Basisstatistieken (vergelijkbaar met de mod_status-module van Apache) NIEUW!
Nginx en PHP-FPM: de perfecte combinatie
Als stabiele en krachtige webserver met een zeer laag bronnenverbruik is Nginx de ideale partner voor PHP-FPM. Nginx heeft een asynchrone architectuur die veel beter schaalbaar is op basis van events. Wanneer u Nginx in combinatie met PHP-FPM gebruikt, wordt bovendien het geheugenverbruik geoptimaliseerd.
PHP draait als een afzonderlijke service bij gebruik van PHP-FPM. Wanneer u deze PHP-versie als taalinterpreter gebruikt, worden de verzoeken via een TCP/IP-socket verwerkt, waarbij de Nginx-webserver alleen de HTTP-verzoeken afhandelt en PHP-FPM de PHP-code interpreteert. Het gebruik van twee afzonderlijke services leidt tot een veel hogere efficiëntie.
HHVM: een voormalig alternatief voor PHP-FPM
HHVM (HipHop Virtual Machine) is niet langer in gebruik. Met de komst van de nieuwste PHP-versie in combinatie met FPM worden dezelfde of zelfs betere prestaties behaald zonder dat HHVM ingezet hoeft te worden. Deze configuratie is compatibel met de meeste functies van PHP 7.
Tot de komst van PHP 7 werd vaak gebruikgemaakt van de PHP HHVM-processor die door Facebook was ontwikkeld en op GitHub werd uitgebracht onder PHP- en Zend-licenties. HHVM is een open source virtuele machine, gebaseerd op de JIT-compiler (Just-in-Time), die fungeert als een uitvoeringsengine voor PHP en Hack.
Met behulp van het JIT-compilerprincipe kan HHVM PHP- of Hack-code uitvoeren in HipHop-bytecode. Dit is een tussencode die later naar machinecode wordt vertaald, ‘native’ wordt geoptimaliseerd en dan wordt uitgevoerd. Dit in tegenstelling tot de gebruikelijke interpreter-uitvoering van PHP, waarbij de Zend Engine de PHP-broncode omzet in opcode (een vorm van bytecode), die vervolgens wordt uitgevoerd door de virtuele CPU van de Zend Engine.
PHP 7 en toekomstige versies van PHP
De komst van PHP 7 leidde tot sterk verbeterde prestaties in vergelijking met eerdere versies van PHP. Hierdoor raakten applicaties zoals HHVM, die werden gebruikt om services te versnellen, geleidelijk in onbruik. In deze PHP-vergelijker ziet u de verschillen tussen de diverse versies van PHP voor verschillende toepassingen. Het vergelijkende schema laat zien hoe de prestaties sinds PHP 5 bijna verdubbeld zijn.
Voor de volgende grote versie, PHP 8, lijkt de ontwikkeling vooral te worden gericht op het toevoegen van nieuwe functies in plaats van op verdere snelheidswinst. Bij updates moet u dus vooral letten op de compatibiliteit tussen de verschillende versies en de toevoegingen in de nieuwe versie, om te voorkomen dat de applicatie na de update niet meer functioneert.
WordPress met PHP-FPM
Als u een contentplatform, een online magazine of gewoon een WordPress-site hebt die hoge prestaties moet leveren en duizenden of miljoenen bezoekers te verwerken krijgt, dan is het duidelijk dat u moet kiezen voor Nginx met ondersteuning van PHP-FPM. Zo kunt u de PHP-code van uw WordPress CMS veel efficiënter uitvoeren.
Magento met PHP-FPM
Ook het eCommerce-platform Magento kan goed worden geïntegreerd met Nginx en PHP-FPM. Om de beste prestaties voor uw webwinkel te bereiken, is het (afgezien van de inzet van balancers en caches) belangrijk dat u de populaire webserver Nginx gebruikt in combinatie met ondersteuning voor PHP-FPM.
Stackscale kan u helpen met infrastructuur- en private cloud-oplossingen, maar ook met systeembeheer voor uw Magento- of WordPress-site.