Acelerar PHP para optimizar aplicaciones web
Si estamos iniciando un proyecto de software web, uno de sus aspectos que debemos abordar con atención, es su rendimiento, porque en cuanto comience a crecer en usuarios y datos, comenzará a ser notoria su carga afectandole su rendimiento. Por eso, veamos cómo acelerar PHP para optimizar aplicaciones web.
Como ejemplo, tenemos que por allá a comienzos del año 2010, a Facebook le tocó desarrollar HHVM para mejorar el rendimiento de dicha plataforma (venÃa creciendo exponencialmente).
Para cálcular si nuestro proyecto va a crecer, o a sostener una fuerte carga de datos hacÃa el futuro, debemos considerar su alcance: ¿será una aplicación para una PYME? ¿será para uso personal? ¿será una SaaS?
En mi opinión, si es para uso personal o para una PYME de no más de 50 empleados, un proyecto en PHP con Apache es suficiente. Pero, si me dices que es para una PYME o empresa de más de 80 empleados, con un crecimiento calculado de datos a razón de 300 KB/dÃa, máxime si va a funcionar como SaaS para un sector de la industria, entonces podrÃamos evaluar las siguientes opciones.
Acelerar PHP para optimizar aplicaciones web
Memcached: Memcached es un sistema de almacenamiento en caché distribuido, gratuito y de código abierto, de alto rendimiento, que guarda datos frecuentemente solicitados en la memoria RAM para acelerar aplicaciones web dinámicas y reducir la carga de bases de datos. Funciona como una base de datos clave-valor en memoria, almacenando objetos para su rápido acceso, y es usado por grandes sitios como Facebook y YouTube para mejorar la velocidad y la escalabilidad.Â
Tmpfs: es un sistema de archivos temporal en sistemas operativos tipo Unix (Linux, BSD) que almacena archivos y datos directamente en la memoria RAM, en lugar del disco duro, ofreciendo una velocidad de acceso extremadamente rápida para archivos, aunque sus datos se pierden al reiniciar el sistema ¿y cómo aplicamos eso en un proyecto de PHP?… es muy sencillo, solo adicionamos esto en el archivo /etc/fstab en Linux:
tmpfs /var/www/html/nuestro_proyecto/ tmpfs nodev,nosuid,noexec,nodiratime,size=250M 0 0
Con el comando sudo mount -a aplicamos la mejora, ó reiniciamos el sistema y listo, nuestro proyecto en PHP ya está ejecutándose directamente en la memoria RAM. El único detalle con este método es que las modificaciones en los scripts no son posibles directamente en la RAM. En eso caso debemos reiniciar el sistema, ó desmontar el sistema de archivos temporal y volverlo a montar.
PHP-FPM: es una implementación del protocolo FastCGI que actúa como un gestor de procesos para PHP, permitiendo que los servidores web como NGINX o Apache procesen contenido PHP de forma mucho más rápida y eficiente, manteniendo «pools» de procesos PHP listos para atender solicitudes sin tener que iniciar PHP desde cero cada vez, lo que mejora enormemente el rendimiento y la capacidad de manejar sitios de alto tráfico. Aquà te dejo un artÃculo que elaboré al respecto.
RoadRunner PHP: es un servidor de aplicaciones de alto rendimiento y administrador de procesos escrito en Go que acelera las aplicaciones PHP, manteniendo los procesos de trabajadores activos (workers), en lugar de iniciarlos y cerrarlos con cada solicitud, mejorando drásticamente la velocidad y eficiencia de aplicaciones bajo carga. Es comúnmente usado con frameworks como Laravel para aumentar su rendimiento. No necesita de Apache ni de NGINX, pues RoadRunner actúa como un servidor HTTP y de aplicaciones para PHP, gestionando la ejecución de tu código.
¿Cómo funciona?
Administrador de Procesos: Mantiene workers PHP en memoria, reutilizándolos para múltiples solicitudes, lo que elimina la sobrecarga de inicialización de PHP en cada petición.
Escrito en Go: Utiliza la eficiencia y concurrencia de Golang para manejar estos procesos de manera robusta.
Alto Rendimiento: Permite un control granular de los workers, cacheo en tiempo de ejecución, haciendo las aplicaciones más rápidas y estables. Ideal para aplicaciones pesadas: Es excelente para aplicaciones web que necesitan manejar mucha carga constante, como APIs, microservicios o aplicaciones Laravel/Symfony que buscan máxima velocidad.
Usar PHP 8
Siempre tratar de usar la última versión de PHP. Para el momento en que escribà estas lÃneas va en la versión 8.4.
Recomendaciones
En mi historia profesional, PHP-FPM me ayudó a potenciar un servidor web Apache que tenÃa que procesar más de 1000 visitas por minuto, y estoy muy agradecido con el proyecto PHP-FPM por eso. Aún uso PHP-FPM para algunos proyectos.
Aunque existen más opciones, estas tres últimas son las que mejor resultado me han dado. Ahora, en el siguiente artÃculo te explico el procedimiento para instalar y poner en marcha a RoadRunner PHP.
Más recomendaciones
- Cuidar los logs del servidor web y de RoadRunner, no dejar que crezcan indefinidamente.
- Tratar de usar tablas en memoria en MySQL Â (ENGINE=MEMORY). Las tablas en memoria se pueden usar para algunos casos como:
- Datos temporales de procesamiento
- Sesiones o estados temporales
- Tablas de consultas con alta concurrencia
- Usar tablas indexadas en MySQL
- Optimizar el servidor web y el servidor MySQL
- Tratar de usar Ajax en registros de datos
- Optimizar la plataforma
Te comparto un artÃculo para optimizar la pila TCP/IP de Linux


