L'optimisation des performances PHP garantit le bon fonctionnement de nos applications Web, une réponse rapide et une gestion efficace du trafic. Vous trouverez ci-dessous un guide détaillé, étape par étape, sur la manière d'optimiser efficacement les performances PHP, avec des exemples pratiques pour chaque stratégie d'optimisation.
Commencez par vérifier la version actuelle de PHP installée sur votre système :
php -v
Si votre version est obsolète, la mise à niveau vers la dernière version stable de PHP s'accompagne souvent d'améliorations de performances et de nouvelles fonctionnalités.
Pour installer la dernière version de PHP, exécutez les commandes suivantes pour 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
Chaque nouvelle version de PHP apporte des améliorations de performances. Par exemple, PHP 7.x offre une amélioration de près de 50 % du temps d'exécution par rapport à PHP 5.x, et PHP 8.x présente d'autres améliorations significatives.
Opcache stocke le bytecode de script précompilé en mémoire, réduisant ainsi le besoin pour PHP de charger et d'analyser des scripts à chaque requête. Pour l'activer :
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 peut considérablement améliorer les performances en éliminant le besoin de compiler du code PHP pour chaque requête, réduisant ainsi considérablement l'utilisation du processeur et le temps de requête.
Une indexation incorrecte de la base de données peut ralentir l'exécution des requêtes. Assurez-vous d'indexer les colonnes utilisées dans les clauses WHERE ou pour le tri.
Exemple de requête MySQL :
CREATE INDEX idx_user_email ON users(email);
Profilez vos requêtes de base de données pour détecter les goulots d'étranglement. L'ORM Eloquent de Laravel, par exemple, permet le profilage des requêtes :
DB::enableQueryLog(); $users = DB::table('users')->get(); dd(DB::getQueryLog());
En optimisant vos requêtes de base de données et en indexant les colonnes critiques, vous pouvez réduire considérablement le temps d'exécution des requêtes, accélérant ainsi votre application PHP.
Gzip réduit la taille des données envoyées de votre serveur au client, ce qui accélère le chargement des pages. Pour l'activer dans 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
L'activation de la compression Gzip réduit la quantité de données à transférer, ce qui entraîne des temps de chargement de page plus rapides et une utilisation réduite de la bande passante.
Les CDN comme Cloudflare ou Amazon CloudFront stockent des copies d'actifs statiques tels que CSS, JavaScript et des images sur des serveurs distribués dans le monde entier, les rendant ainsi disponibles plus près de l'utilisateur.
Exemple:
En déchargeant du contenu statique sur un CDN, vous réduisez la charge sur votre serveur et améliorez considérablement les temps de réponse pour les utilisateurs du monde entier.
Assurez-vous que vous utilisez PHP-FPM (FastCGI Process Manager), qui est mieux optimisé pour les environnements à forte charge :
sudo apt install php8.2-fpm
Vous pouvez régler les paramètres PHP-FPM pour traiter plus de requêtes efficacement en ajustant les paramètres pm.max_children, pm.start_servers, pm.min_spare_servers et pm.max_spare_servers dans le fichier de configuration du pool PHP-FPM.
Modifiez le fichier de configuration du pool :
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Augmentez pm.max_children en fonction de la mémoire disponible et du trafic :
pm.max_children = 50 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20
Redémarrez PHP-FPM et Nginx :
sudo systemctl restart php8.2-fpm sudo systemctl restart nginx
PHP-FPM permet à vos processus PHP de gérer efficacement davantage de requêtes simultanées, réduisant ainsi le temps de réponse du serveur sous forte charge.
La réduction de vos fichiers CSS, JavaScript et HTML en supprimant les espaces et les commentaires inutiles réduit la taille du fichier.
Utilisez des outils comme Laravel Mix ou Gulp :
npm install laravel-mix --save-dev
Exemple de fichier webpack.mix.js pour 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');
Dans votre fichier de configuration Nginx, ajoutez une mise en cache pour les actifs statiques :
location ~* \.(css|js|jpg|jpeg|png|gif|ico|woff|woff2)$ { expires 1y; access_log off; add_header Cache-Control "public"; }
La réduction et le regroupement des actifs, ainsi que l'activation de la mise en cache du navigateur, réduisent la taille de vos fichiers et diminuent les temps de chargement, ce qui conduit à une application plus rapide.
Pour installer Redis :
sudo apt install redis-server
Dans Laravel, ouvrez le fichier .env et configurez Redis comme pilote de cache :
CACHE_DRIVER=redis
Utilisez la mise en cache des requêtes pour accélérer les requêtes répétées de base de données :
$users = Cache::remember('users', 60, function() { return DB::table('users')->get(); });
En mettant en cache les requêtes de base de données, vous réduisez la charge de la base de données et améliorez considérablement les temps de réponse pour les données fréquemment consultées.
Optimiser les chargeurs automatiques Composer pour la production :
composer install --optimize-autoloader --no-dev
Dans Laravel, désactivez tous les fournisseurs de services inutilisés dans config/app.php pour réduire l'utilisation de la mémoire et accélérer le temps de démarrage de l'application.
L'optimisation du chargement automatique compile les cartes de classes, ce qui accélère le chargement des classes. La désactivation des services inutilisés aide l'application à utiliser moins de ressources.
Installez le télescope Laravel pour profiler votre application :
composer require laravel/telescope php artisan telescope:install php artisan migrate php artisan serve
Vous pouvez intégrer des outils tiers tels que New Relic ou Blackfire pour analyser les goulots d'étranglement des applications, les performances des bases de données, etc.
Les outils de surveillance et de profilage aident à identifier les requêtes lentes, les fuites de mémoire et les goulots d'étranglement dans votre application PHP, vous permettant ainsi de résoudre les problèmes de performances de manière proactive.
En suivant ces étapes, vous pouvez améliorer considérablement les performances de votre application PHP. De la mise à jour de PHP et l'activation de la mise en cache Opcode à l'optimisation des requêtes de base de données et à la configuration de PHP-FPM, chaque étape contribue à une application plus réactive et évolutive.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3