Middle
¿Qué es PHP-FPM?
sobes.tech AI
Respuesta de la IA
PHP-FPM (FastCGI Process Manager) es un gestor de procesos FastCGI para PHP, alternativa al estándar PHP FastCGI. Proporciona un mejor rendimiento en el procesamiento de solicitudes web en entornos de alta carga. FPM gestiona un grupo de procesos PHP que esperan solicitudes entrantes del servidor web (por ejemplo, Nginx o Apache a través del módulo mod_proxy_fcgi).
Características y ventajas clave de FPM:
- Pool de procesos: FPM crea y gestiona un conjunto de procesos PHP. Estos procesos pueden ser estáticos (número fijo), dinámicos (creados según sea necesario dentro de ciertos límites) o bajo demanda (creados al recibir una solicitud y eliminados después del procesamiento). Esto permite un uso eficiente de los recursos del sistema.
- Mejor escalabilidad: Gracias a la gestión del grupo de procesos, FPM puede manejar múltiples solicitudes simultáneamente, lo cual es crítico para aplicaciones de alta carga.
- Separación de procesos: Cada solicitud es procesada por un proceso FPM separado, lo que aumenta la estabilidad. La falla de una solicitud no afectará a las otras.
- Configuración: Permite configurar de manera flexible el comportamiento de los procesos, por ejemplo, el número máximo de solicitudes por proceso, tiempo de vida del proceso, gestión de memoria.
- Integración con servidores web: Se integra fácilmente con servidores web populares a través del protocolo FastCGI.
Ejemplo de configuración del grupo de procesos en php-fpm.d/www.conf:
; Nombre del grupo
[www]
; Usuario y grupo bajo los cuales se ejecutarán los procesos
user = www-data
group = www-data
; Escuchar en un socket TCP:
; listen = 127.0.0.1:9000
; ...o en un socket Unix:
listen = /run/php/php7.4-fpm.sock
; Método de gestión de procesos:
; static - número fijo de procesos (`pm.max_children`)
; dynamic - número dinámico de procesos (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - creados al recibir una solicitud (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Número inicial de procesos hijos al inicio en modo dynamic
pm.start_servers = 5
; Número mínimo de procesos hijos que siempre estarán en ejecución en modo dynamic
pm.min_servers = 2
; Número máximo de procesos hijos en modo dynamic y static/ondemand
pm.max_children = 15
Sin FPM, el servidor web tendría que lanzar el intérprete PHP para cada solicitud, lo cual sería muy ineficiente debido a los costos adicionales. FPM resuelve este problema manteniendo procesos listos para trabajar.