"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Impulsar la eficiencia de PHP: técnicas probadas para la optimización del rendimiento

Impulsar la eficiencia de PHP: técnicas probadas para la optimización del rendimiento

Publicado el 2024-11-08
Navegar:306

Boosting PHP Efficiency: Proven Techniques for Performance Optimization

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.


Parte 1: Actualización a la última versión estable de PHP

Paso 1: Verifique la versión actual de PHP

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.

Paso 2: actualice PHP (si es necesario)

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

¿Por qué?

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.


Parte 2: Usar el almacenamiento en caché de código de operación (PHP Opcache)

Paso 1: habilite Opcache en PHP

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:

  1. Abre tu archivo php.ini:
   sudo nano /etc/php/8.2/fpm/php.ini # Use your PHP version
  1. Busque la configuración de Opcache y habilítela:
   opcache.enable=1
   opcache.memory_consumption=128
   opcache.max_accelerated_files=10000
   opcache.revalidate_freq=0
  1. Reinicie PHP-FPM y Nginx:
   sudo systemctl restart php8.2-fpm
   sudo systemctl restart nginx

¿Por qué?

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.


Parte 3: Optimizar las consultas de la base de datos

Paso 1: indexe las tablas de su base de datos

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);

Paso 2: utilizar el perfil de consulta

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());

¿Por qué?

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.


Parte 4: Habilitar la compresión Gzip

Paso 1: habilite Gzip en Nginx

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:

  1. Abra el archivo de configuración de Nginx:
   sudo nano /etc/nginx/nginx.conf
  1. Agregue las siguientes configuraciones de Gzip:
   gzip on;
   gzip_comp_level 2;
   gzip_types text/css application/javascript application/json image/svg xml;
   gzip_min_length 256;
  1. Guardar y reiniciar Nginx:
   sudo systemctl restart nginx

¿Por qué?

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.


Parte 5: Utilice una red de entrega de contenido (CDN)

Paso 1: configurar una CDN para activos estáticos

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:

¿Por qué?

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.


Parte 6: Utilice PHP-FPM y ajuste

Paso 1: instalar y configurar PHP-FPM

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

Paso 2: Ajustar la configuración de PHP-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

¿Por qué?

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.


Parte 7: Minimizar y agrupar activos

Paso 1: Minimizar CSS, JavaScript y HTML

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');

Paso 2: habilite el almacenamiento en caché del navegador

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";
}

¿Por qué?

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.


Parte 8: Utilice Redis o Memcached para el almacenamiento en caché

Paso 1: instalar Redis

Para instalar Redis:

sudo apt install redis-server

Paso 2: configurar Laravel para usar Redis

En Laravel, abra el archivo .env y configure Redis como controlador de caché:

CACHE_DRIVER=redis

Paso 3: almacenar en caché las consultas de la base de datos

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();
});

¿Por qué?

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.


Parte 9: Optimizar los cargadores automáticos

Paso 1: utilice la optimización del cargador automático de Composer

Optimizar los cargadores automáticos de Composer para producción:

composer install --optimize-autoloader --no-dev

Paso 2: Borrar proveedores de servicios no utilizados

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.

¿Por qué?

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.


Parte 10: Monitoreo y elaboración de perfiles

Paso 1: use el telescopio Laravel (u otras herramientas de creación de perfiles)

Instala Laravel Telescope para perfilar tu aplicación:

composer require laravel/telescope
php artisan telescope:install
php artisan migrate
php artisan serve

Paso 2: use New Relic o Blackfire para crear perfiles avanzados

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.

¿Por qué?

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.


Conclusión:

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.

Declaración de liberación Este artículo se reproduce en: https://dev.to/mdarifulhaque/boosting-php-efficiency-proven-techniques-for-performance-optimization-4plh?1 Si hay alguna infracción, comuníquese con [email protected] para eliminar él
Último tutorial Más>

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