PHP-FPM (FastCGI Process Manager, en inglés) es la implementación alternativa más popular de PHP FastCGI. PHP (acrónimo de PHP: Hypertext Preprocessor) es uno de los lenguajes de programación de código abierto más populares de Internet, que se utiliza para desarrollo web en plataformas como Magento, WordPress o Drupal. Aunque inicialmente se diseñó para preprocesar texto plano en UTF-8.
PHP, creado por Rasmus Lerdorf en 1995, fue uno de los primeros lenguajes que se podía incorporar en código HTML, sin necesidad de llamar a archivos externos. Este lenguaje de propósito general de código del lado del servidor ha ido evolucionando para que sea soportado por cualquier sistema operativo o plataforma web. Además, PHP sigue evolucionando y está publicado bajo la licencia PHP, que es incompatible con la Licencia Pública General de GNU debido a las restricciones del uso del término PHP.
Qué es PHP-FPM y características
PHP-FPM es la implementación alternativa más popular de PHP FastCGI, que cuenta con características adicionales realmente útiles para sitios web de alto tráfico. Estas son algunas de ellas:
- Gestión avanzada que permite detener/arrancar procesos fácilmente.
- Posibilidad de iniciar hilos de procesos con diferentes uid/gid/chroot/environment y distintos php.ini; sustituye a safe_mode.
- Registro stdout y stderr.
- Reinicio de emergencia en caso de destrucción accidental del caché opcode.
- Soporte acelerado de subidas.
- Configuración de variable slowlog; para detectar qué funciones tardan en ejecutarse más de lo habitual.
- Basado en archivos de configuración php.ini.
- Mejora de FastCGI, como fastcgi_finish_request(); una función especial para detener y descargar todos los datos mientras se continúa haciendo un proceso más largo como la conversión de vídeos o el procesamiento de estadísticas.
- Estadísticas básicas (similar al módulo mod_status de Apache). ¡NUEVO!
Nginx y PHP-FPM: los compañeros ideales
Nginx como servidor web de alto rendimiento estable, y con un consumo de recursos muy bajo, es el compañero ideal de PHP-FPM. Nginx tiene una arquitectura asíncrona que es mucho más escalable, basada en eventos. Además, al usar Nginx con PHP-FPM se mejora la eficiencia a nivel de consumo de memoria.
PHP funciona como un servicio separado al usar PHP-FPM. Al usar esta versión de PHP como intérprete del lenguaje, las peticiones se procesan a través de un socket TCP/IP; de modo que el servidor web Nginx solo maneja las peticiones HTTP y PHP-FPM interpreta el código PHP. El hecho de tener dos servicios separados es clave para ganar en eficiencia.
HHVM: una antigua alternativa a PHP-FPM
En la actualidad, HHVM ya no se utiliza. La llegada de la última versión de PHP junto con FPM ha conseguido igualar, e incluso mejorar, el rendimiento de este lenguaje sin necesidad de usar HHVM —compatible con la mayoría de funciones de PHP 7—.
Hasta que llegó PHP 7, el procesador de PHP HHVM que desarrolló Facebook y fue liberado en GitHub con Licencias PHP y Zend se utilizó mucho. HHVM (HipHop Virtual Machine, en inglés) es una máquina virtual de código abierto basado en compilador JIT (Just-in-Time), el cual sirve como un motor de ejecución para los lenguajes PHP y Hack.
Usando el principio del compilador JIT, HHVM ejecuta código PHP o Hack en código Bytecode HipHop intermedio; un código que luego se traduce en código máquina, optimizado y ejecutado nativamente. Esto contrasta con la ejecución interpretada habitual de PHP en la que el Motor Zend transforma código fuente PHP en opcode (forma de bytecode); que la CPU virtual del motor Zend se encarga de ejecutar.
PHP 7 y futuras versiones de PHP
La llegada de PHP 7 supuso un gran aumento del rendimiento con respecto a versiones de PHP anteriores. Esto hizo que aplicaciones como HHVM, que se utilizaban para acelerar los servicios, quedaran obsoletas. En este comparador de PHP, puedes visualizar las diferencias entre las diversas versiones de PHP para varias aplicaciones. La comparativa muestra cómo el rendimiento casi se ha doblado desde PHP 5.
Para la siguiente versión importante, PHP 8, el desarrollo parece estar más enfocado a crear nuevas funcionalidades que a mejorar mucho la velocidad. De modo que, para evitar que la aplicación deje de funcionar tras la actualización, a la hora de actualizar hay que tener en cuenta la compatibilidad de las aplicaciones con los cambios que incorpore la nueva versión.
WordPress con PHP-FPM
Si tienes un plataforma de contenidos, diario online o, simplemente, un WordPress que necesita un alto rendimiento y que recibe miles o millones de visitas, está claro que necesitas un Nginx con soporte PHP-FPM. Esto te permitirá configurar de un modo mucho más eficiente la ejecución del código PHP de tu gestor de contenidos WordPress.
Magento con PHP-FPM
La plataforma de comercio electrónico Magento también se integra muy bien con Nginx y PHP-FPM. De hecho, para conseguir que tu tienda online tenga el mejor rendimiento, además de usar balanceadores y cachés, es clave utilizar este popular servidor web junto con el soporte para PHP-FPM.
Stackscale puede ayudarte con soluciones de infraestructura y Cloud Privado y también con sysadmin de tu Magento o WordPress.