La optimización del rendimiento de PHP garantiza que nuestras aplicaciones web se ejecuten sin problemas, respondan rápidamente y manejen el tráfico de manera eficiente. A continuación se muestra una guía detallada paso a paso sobre cómo maximizar eficazmente el rendimiento de PHP, con ejemplos prácticos para cada estrategia de optimización.
Comience verificando la versión actual de PHP instalada en su sistema:
php -v
Si su versión está desactualizada, la actualización a la última versión estable de PHP a menudo incluye mejoras de rendimiento y nuevas funciones.
Para instalar la última versión de PHP, ejecute los siguientes comandos para Ubuntu:
sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt install php8.2 # Replace with the latest version
Cada nueva versión de PHP trae mejoras en el rendimiento. Por ejemplo, PHP 7.x ofrece casi un 50% de mejora en el tiempo de ejecución en comparación con PHP 5.x, y PHP 8.x tiene mejoras significativas adicionales.
Opcache almacena el código de bytes de script precompilado en la memoria, lo que reduce la necesidad de que PHP cargue y analice scripts en cada solicitud. Para habilitarlo:
sudo nano /etc/php/8.2/fpm/php.ini # Use your PHP version
opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.revalidate_freq=0
sudo systemctl restart php8.2-fpm sudo systemctl restart nginx
Opcache puede mejorar drásticamente el rendimiento al eliminar la necesidad de compilar código PHP en cada solicitud, lo que reduce significativamente el uso de la CPU y el tiempo de solicitud.
La indexación inadecuada de la base de datos puede ralentizar la ejecución de consultas. Asegúrese de indexar las columnas utilizadas en las cláusulas WHERE o para ordenar.
Ejemplo de consulta MySQL:
CREATE INDEX idx_user_email ON users(email);
Perfile las consultas de su base de datos para encontrar cuellos de botella. Eloquent ORM de Laravel, por ejemplo, permite la creación de perfiles de consultas:
DB::enableQueryLog(); $users = DB::table('users')->get(); dd(DB::getQueryLog());
Al optimizar las consultas de su base de datos e indexar columnas críticas, puede reducir en gran medida el tiempo de ejecución de la consulta, acelerando así su aplicación PHP.
Gzip reduce el tamaño de los datos enviados desde su servidor al cliente, haciendo que la página se cargue más rápido. Para habilitarlo en Nginx:
sudo nano /etc/nginx/nginx.conf
gzip on; gzip_comp_level 2; gzip_types text/css application/javascript application/json image/svg xml; gzip_min_length 256;
sudo systemctl restart nginx
Habilitar la compresión Gzip reduce la cantidad de datos que deben transferirse, lo que resulta en tiempos de carga de página más rápidos y un menor uso de ancho de banda.
Las CDN como Cloudflare o Amazon CloudFront almacenan copias de activos estáticos como CSS, JavaScript e imágenes en servidores distribuidos en todo el mundo, haciéndolos disponibles más cerca del usuario.
Ejemplo:
Al descargar contenido estático a una CDN, reduce la carga en su servidor y mejora drásticamente los tiempos de respuesta para los usuarios de todo el mundo.
Asegúrese de estar utilizando PHP-FPM (FastCGI Process Manager), que está mejor optimizado para entornos de alta carga:
sudo apt install php8.2-fpm
Puede ajustar la configuración de PHP-FPM para manejar más solicitudes de manera eficiente ajustando las configuraciones de pm.max_children, pm.start_servers, pm.min_spare_servers y pm.max_spare_servers en el archivo de configuración del grupo PHP-FPM.
Editar el archivo de configuración del grupo:
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Aumentar pm.max_children según la memoria y el tráfico disponibles:
pm.max_children = 50 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20
Reiniciar PHP-FPM y Nginx:
sudo systemctl restart php8.2-fpm sudo systemctl restart nginx
PHP-FPM permite que sus procesos PHP manejen más solicitudes simultáneas de manera eficiente, lo que reduce el tiempo de respuesta del servidor bajo carga pesada.
Minimizar sus archivos CSS, JavaScript y HTML eliminando espacios en blanco y comentarios innecesarios reduce el tamaño del archivo.
Usa herramientas como Laravel Mix o Gulp:
npm install laravel-mix --save-dev
Ejemplo de archivo webpack.mix.js para Laravel:
const mix = require('laravel-mix'); mix.js('resources/js/app.js', 'public/js') .sass('resources/sass/app.scss', 'public/css') .minify('public/js/app.js') .minify('public/css/app.css');
En su archivo de configuración de Nginx, agregue almacenamiento en caché para activos estáticos:
location ~* \.(css|js|jpg|jpeg|png|gif|ico|woff|woff2)$ { expires 1y; access_log off; add_header Cache-Control "public"; }
Minimizar y agrupar recursos, además de habilitar el almacenamiento en caché del navegador, reduce el tamaño de tus archivos y disminuye los tiempos de carga, lo que genera una aplicación más rápida.
Para instalar Redis:
sudo apt install redis-server
En Laravel, abra el archivo .env y configure Redis como controlador de caché:
CACHE_DRIVER=redis
Utilice el almacenamiento en caché de consultas para acelerar las consultas repetidas a la base de datos:
$users = Cache::remember('users', 60, function() { return DB::table('users')->get(); });
Al almacenar en caché las consultas de la base de datos, se reduce la carga de la base de datos y se mejora drásticamente los tiempos de respuesta para los datos a los que se accede con frecuencia.
Optimizar los cargadores automáticos de Composer para producción:
composer install --optimize-autoloader --no-dev
En Laravel, deshabilite cualquier proveedor de servicios no utilizado en config/app.php para reducir el uso de memoria y acelerar el tiempo de arranque de la aplicación.
La optimización de carga automática compila mapas de clases, lo que hace que la carga de clases sea más rápida. Deshabilitar los servicios no utilizados ayuda a que la aplicación utilice menos recursos.
Instala Laravel Telescope para perfilar tu aplicación:
composer require laravel/telescope php artisan telescope:install php artisan migrate php artisan serve
Puedes integrar herramientas de terceros como New Relic o Blackfire para analizar cuellos de botella en aplicaciones, rendimiento de bases de datos y más.
Las herramientas de monitoreo y creación de perfiles ayudan a identificar consultas lentas, pérdidas de memoria y cuellos de botella en su aplicación PHP, lo que le permite solucionar problemas de rendimiento de manera proactiva.
Al seguir estos pasos, puedes mejorar significativamente el rendimiento de tu aplicación PHP. Desde actualizar PHP y habilitar el almacenamiento en caché de Opcode hasta optimizar las consultas de bases de datos y configurar PHP-FPM, cada paso contribuye a una aplicación más responsiva y escalable.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3