¿Qué es PHP-FPM? Un PHP para webs de alto tráfico

 13/Feb/2018 -   Sistemas
¿Qué es PHP-FPM? Un PHP para webs de alto tráfico

PHP es uno de los lenguajes de programación más populares de Internet para el desarrollo de aplicaciones que funciona en la web, plataformas como Magento, WordPress, Drupal, … funcionan con PHP.

PHP: Hypertext Preprocessor es un lenguaje de programación de propósito general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. Este fue de los primeros lenguajes que se podían incorporar en código HTML. Es un código que se interpreta por el servidor web con un módulo de procesador de PHP en el servidor web Apache o Nginx. Desde sus inicios PHP ha evolucionado para ser soportado por cualquier sistema operativo o plataforma web.

Este lenguaje fue creado por Rasmus Lerdorf en 1995. 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?

PHP-FPM (FastCGI Process Manager) es la implementación alternativa de PHP FastCGI más popular con características adicionales que son realmente útiles para sitios web de alto tráfico.

Entre sus características están:

  • Manejo avanzado para detener/arrancar procesos de forma fácil.
  • Posibilidad de iniciar hilos de procesos con diferentes uid/gid/chroot/environment, escuchar en diferentes puertos y usar distintos php.ini.
  • safe_mode.
  • Registro stdout y stderr.
  • Reinicio de emergencia en caso de destrucción accidental del caché opcode.
  • Soporte acelerado de subidas.
  • slowlog” – scripts de registro de procesos (no sólo sus nombres, sin sus backtraces también, usando ptrace y similares para leer procesos execute_data remotos) que son inusualmente lentos.
  • fastcgi_finish_request() – Función especial para detener y descargar todos los datos mientras continua haciendo algún proceso más largo (conversión de vídeos, procesamiento de estadísticas, etc.).
  • Creación dinámico/estático de hilos.
  • Información básica del status SAPI (similar al mod_status de Apache).
  • Basado en archivos de configuración php.ini.

Nginx y PHP-FPM los compañeros ideales

Utilizar Nginx como un servidor web de alto rendimiento estable y con un muy bajo consumo de recursos es el compañero ideal de PHP-FPM. Nginx tiene una arquitectura asíncrona que es mucho más escalable y está basada en eventos.

PHP corre como un servicio separado utilizando PHP-FPM (FastCGI Process Manager) que mejorar mucho la eficiencia de memoria. Utilizando esta versión de PHP como intéprete del lenguaje las peticiones se procesan a través de un socket TCP/IP. Separamos el servidor web Nginx que maneja la peticiones HTTP y PHP-FPM que interpretará el código PHP. Esto es mucho más eficiente.

HHVM una alternativa a PHP-FPM

Hasta la llegada de PHP 7 muchos haciamos uso del procesador de PHP HHVM que desarrollo Facebook y fue liberado en GitHub con Licencia PHP y Licencia Zend.

HHVM (conocido como HipHop Virtual Machine) es una máquina virtual de código abierto basado en compilador Just-in-Time (JIT), el cual sirve como un motor de ejecución para los lenguajes PHP y Hack. Usando el principio del compilador JIT, ejecuta código PHP o Hack en código Bytecode HipHop intermedio, el cual es entonces traducido en código máquina, optimizado, y ejecutado nativamente.​ Esto contrasta con la ejecución interpretada usual de PHP, el cual el Motor Zend transforma código fuente PHP en opcode (forma de bytecode), el cual el Zend Engine’s virtual CPU se encarga de ejecutar.

Cada vez se utiliza menos HHVM, que ya es compatible con PHP 7 en su mayoría de funciones, ya que la llegada de la última versión de PHP junto con FPM han conseguido igualar o mejorar el rendimiento de este lenguaje sin necesidad de esta alternativa.

WordPress con PHP-FPM

Si tienes un plataforma de contenidos, diario online o un simple WordPress que necesita un alto rendimiento, recibirá miles o millones de visitas está claro que necesitas un Nginx con soporte PHP-FPM. Esto permitirá configurar de forma 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 el mejor rendimiento de nuestra tienda online, además de balanceadores y caches, es clave utilizar este popular servidor web junto con el soporte para PHP-FPM.

Stackscale puede ayudarte con la infraestructura, cloud y sysadmin de tu Magento o WordPress.