PHP-FPM, ¡cuando la velocidad cuenta!
Team Host.it 5 min de lectura
Contenido
La oferta de hosting que presentamos a nuestros Clientes y Partners está diseñada para adaptarse a las necesidades reales del proyecto a desarrollar, crece cuando es necesario y, cada año, se enriquece con nuevas funcionalidades e innovaciones tecnológicas.
Hoy os hablamos de una tecnología que está disponible dentro de nuestros perfiles de hosting desde hace varios años: PHP-FPM. Pero retrocedamos un poco para explicar cómo gestionamos anteriormente todas las solicitudes php realizadas por los usuarios a sus sitios alojados en Host.
La mayoría de los administradores de sitios (aquellos que los desarrollan y administran) saben que PHP, uno de los lenguajes de programación más utilizados en el mundo, puede integrarse en HTML y funciona con los principales servidores web. Sin embargo, el aspecto menos conocido es cómo se puede ejecutar PHP en el servidor web, y esto puede suceder de varias maneras.
Hagamos un pequeño paréntesis para explicar cómo está compuesta nuestra plataforma. Si usáramos las siglas LAMP, ¿cuántas personas sabrían de qué estamos hablando? Para aquellos que no lo saben, aquí hay una definición muy breve:
"LAMP es un acrónimo que indica una plataforma de software para el desarrollo de aplicaciones web que toma su nombre de las iniciales de los componentes de software con los que se crea:
Linux (el sistema operativo) Apache (el servidor web) MySQL o MariaDB (el sistema de gestión de bases de datos) HP (el lenguaje de programación)
La plataforma LAMP es una de las más utilizadas a nivel mundial. Cada una de las aplicaciones que lo componen está diseñada para un excelente funcionamiento en conjunto con las demás." [Wikipedia]
La forma en que ejecutamos solicitudes y procesos php en nuestra plataforma LAMP fue PHP FastCGI. Echemos un vistazo rápido a cómo funcionan en conjunto. Este es un protocolo genérico para interactuar con un servidor web. Específicamente, es una variante de la anterior Common Gateway Interface (CGI) que tiene como objetivo reducir la sobrecarga asociada con la interfaz entre servidores web y programas CGI, permitiendo que un servidor maneje múltiples solicitudes simultáneamente.
Con FastCGI puedes configurar múltiples versiones de PHP, especialmente útil cuando tienes sitios web antiguos creados, por ejemplo, en PHP 5.1 que no son compatibles con la última versión. Finalmente, con FastCGI es posible soportar diferentes usuarios, cada uno con sus propias instancias de PHP. Esta característica es especialmente importante para mejorar la seguridad en un entorno compartido, donde puede haber diferentes usuarios, cada uno de los cuales administra sus propios sitios web.
¿Cómo funciona FastCGI? Gracias al protocolo PHP FastCGI, el servidor web genera un único proceso en la fase de inicialización que, al final de la fase de inicio, espera. Cada vez que llega una nueva solicitud entrante, el servidor web abre una conexión con el proceso fast-cgi (espera) que a su vez genera la salida de la conexión con el cliente, transferida a éste por el servidor. La principal ventaja de este protocolo es la creación de procesos solo durante la fase de inicialización, optimizando así la cantidad de procesos php.
¿Qué cambia con la introducción de PHP-FPM? PHP-FPM es una forma más reciente de utilizar PHP con un servidor web, y es una alternativa al anterior PHP FastCGI con la implementación de algunas características adicionales que son muy útiles especialmente para sitios que gestionan cada día más tráfico (desde sitios de exhibición hasta comercio electrónico). Por tanto, para este tipo de sitios web es necesario disponer de herramientas cada vez más potentes, como PHP-FPM.
El funcionamiento es muy similar a PHP FastCGI y siempre se basa en la ejecución optimizada de procesos PHP que se crean sólo durante la fase de inicialización y permanecen esperando una nueva solicitud. La gran diferencia es que es el propio PHP-FPM (FastCGI Process Manager) el que ejecuta el proceso y ya no el servidor web.
El "Administrador de procesos", como su nombre indica, es un script que gestiona directamente los procesos PHP. Espera y recibe instrucciones del servidor web, ejecuta los scripts PHP necesarios y permite que un sitio web maneje cargas pesadas. El PHP-FPM mantiene "pools" para responder a las solicitudes de PHP y los procesos que se generan son directamente "hijos" (CHILD) del Process Manager y, por lo tanto, pueden administrarse por separado del servidor web.
Este modo garantiza una mayor robustez del servicio, ya que operaciones como cambios de configuración o reinicio de procesos afectan a los grupos de FPM individuales y ya no a todo el servidor web.
Veamos ahora algunas de las características técnicas de PHP-FPM: Demonización de procesos PHP (archivos PID, archivos de registro, setsid(), setuid(), setgid(), chroot();
Capacidad de reiniciar procesos PHP sin causar ninguna interrupción de las solicitudes durante el procesamiento, por lo tanto, puede cambiar cualquier parámetro en el archivo de configuración o incluso actualizar PHP sin siquiera 1 segundo de tiempo de inactividad.
Posibilidad de no procesar solicitudes provenientes de una IP específica;
Capacidad para iniciar NIÑOS con diferentes UID/GID/CHROOT y con diferentes configuraciones de PHP (php.ini), todo sin la necesidad del modo seguro;
Capacidad para iniciar sesión a través de stdout y stderr;
En caso de corrupción de la RAM compartida utilizada por un OPCode Cache, PHP-FPM puede realizar un reinicio de emergencia de todos los PHP CHILD;
Fuerza la ejecución del script a detenerse si falla set_time_limit().
Por último, para garantizar la seguridad y la velocidad de sus sitios web alojados en la plataforma Host y animarle a actualizar su CMS, PHP-FPM está disponible única y exclusivamente a partir de la versión PHP 7. Después de varias pruebas de implementación, hemos preferido poner esta tecnología a disposición de quienes hayan actualizado su versión de PHP a la más reciente, precisamente porque la combinación de PHP 7 (y versiones posteriores) y php-fpm garantiza un mayor rendimiento en términos de seguridad y velocidad de respuesta.
De hecho, recordemos que una de las formas de garantizar la máxima seguridad para tus sitios web y aplicaciones es mantenerlos constantemente actualizados.
De esta manera podrás garantizar un aumento en el rendimiento, la seguridad y, en consecuencia, tener un sitio exitoso para tu negocio online.
PHP-FPM en números: algunos datos sobre velocidad Como hemos explicado extensamente, PHP-FPM acelera el rendimiento de un entorno PHP. ¿Pero de qué tipo de aumento estamos hablando? Veamos juntos el resultado de algunas pruebas para comprender mejor cuánto aumenta realmente la velocidad de respuesta de los sitios web con la implementación de PHP-FPM.
La prueba se realizó comparando el rendimiento de PHP FastCGI (con versión PHP 5.6) vs PHP-FPM (con versión PHP 7.2) para cargar las páginas de inicio de un sitio en WordPress, uno en Joomla! y otro en Prestashop.
E-commerce
Hosting para tiendas online
PrestaShop, WooCommerce y Magento: rendimiento, seguridad y datacenters en Italia.
Artículos relacionados
Del archivo