Maison > cadre php > Laravel > Rendez votre application Laravel plus rapide ! (En utilisant PHP OPcache)

Rendez votre application Laravel plus rapide ! (En utilisant PHP OPcache)

藏色散人
Libérer: 2020-04-22 13:31:58
avant
2704 Les gens l'ont consulté

Qu'est-ce qu'Opcache

Chaque fois qu'un script PHP est exécuté, le script doit être compilé en bytecode, et OPcache peut mettre en cache le bytecode, donc, la prochaine fois, le même script est demandé, le script n'a pas besoin d'être recompilé, ce qui réduit considérablement le temps d'exécution du script, permettant à l'application de s'exécuter plus rapidement et économisant également la surcharge du serveur.

Parlez avec des chiffres

Bien sûr, nous voulons savoir quel type d'optimisation a été effectué, bien que l'amélioration des performances dépende fortement de la configuration de l'application et du serveur. , nous pouvons exécuter Avoir une compréhension générale des benchmarks.

Pour cela, j'ai spécialement préparé une machine à très faible configuration : 1 cœur CPU, 1G de mémoire pour exécuter le test de référence Apache. Ce que j'ai demandé, c'est la page d'accueil par défaut de Laravel 5.4, permettant à 10 requêtes simultanées de continuer à accéder pendant 1 minute. Voici les résultats de référence de la désactivation d'OPcache :

OPcache disabled: 10.18 requests per second
Copier après la connexion

Pour un serveur avec une configuration aussi basse, ceci. Ce n'est pas mal, mais on peut faire mieux. Les résultats des tests de référence avec OPcache activé sont les suivants (en utilisant la configuration OPcache par défaut) :

Enabled with default values: 34.52 requests per second
Copier après la connexion

L'écart est toujours énorme ! Ensuite, nous optimiserons la configuration d'OPcache, et le test de référence fonctionnera mieux :

Enabled with optimized values: 42.53 requests per second
Copier après la connexion

Avez-vous pu l'utiliser ?

Ça a l'air génial, mais comment l'utiliser

Tout d'abord, nous devons nous assurer qu'OPcache est installé sur le serveur à partir de PHP 5.5, OPcache fait désormais partie du cœur de PHP, donc pour les développeurs Laravel, il n'est fondamentalement pas nécessaire d'installer manuellement cette extension.

Bien sûr, si vous n'êtes pas sûr, vous pouvez confirmer en regardant phpinfo() :

<?php
phpinfo();
Copier après la connexion

Ce script affichera toutes les extensions PHP installées. Recherchez "OPcache" sur la page. S'il est trouvé, cela prouve qu'il a été installé. Sinon, vous devez l'installer vous-même.

Ensuite, nous devons activer OPcache dans le fichier de configuration PHP (la valeur par défaut est fermée) :

opcache.enable=1
Copier après la connexion

Ensuite, nous continuons à faire quelques configurations d'optimisation pour OPcache :

opcache.memory_consumption=512
Copier après la connexion

Cette configuration indique l'espace mémoire (unité : Mo) que vous souhaitez allouer à OPcache. Définissez simplement une valeur supérieure à 64.

opcache.interned_strings_buffer=64
Copier après la connexion

Cette configuration indique l'espace (unité : Mo) que vous souhaitez allouer à la chaîne réelle. Définissez simplement une valeur supérieure à 16.

opcache.max_accelerated_files=32531
Copier après la connexion

Cette configuration indique combien de scripts peuvent être mis en cache. Définissez cette valeur aussi proche que possible (ou supérieure) du nombre de scripts contenus dans le projet.

opcache.validate_timestamps=0
Copier après la connexion

Modifiez la valeur de configuration pour les scripts de revalidation. Si elle est définie sur 0 (meilleures performances), vous devez effacer manuellement l'OPcache après chaque modification du code PHP. Si vous ne souhaitez pas de purge manuelle, vous pouvez le définir sur 1 et configurer l'intervalle de revalidation via opcache.revalidate_freq, ce qui peut coûter certaines performances puisque les modifications doivent être vérifiées toutes les x secondes.

opcache.save_comments=1
Copier après la connexion

Cette configuration conservera les commentaires dans le script. Je recommande d'activer cette option car certaines bibliothèques dépendent de cette configuration et je ne trouve aucun avantage à la désactiver.

opcache.fast_shutdown=0
Copier après la connexion

L'arrêt rapide fournira un mécanisme d'effacement de la mémoire plus rapide, cependant, dans mes tests de référence, il était plus lent. Peut-être que cela apportera des améliorations de performances à l'application, mais vous devez l'essayer vous-même.

Ainsi, l'optimisation de la configuration finale ressemble à ceci :

opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=32531
opcache.validate_timestamps=0
opcache.save_comments=1
opcache.fast_shutdown=0
Copier après la connexion

Vous pouvez expérimenter ces valeurs de configuration, en fonction de la taille de votre application et de la configuration du serveur.

Enfin, enregistrez ce fichier de configuration et redémarrez le serveur web, votre application deviendra définitivement plus rapide.

Préparez l'application Laravel

Comme mentionné précédemment, si opcache.validate_timestamps est défini sur 0, nous devons effacer manuellement l'OPcache après chaque modification du code PHP. À cette fin, j'ai créé un package d'extension pour fournir les commandes Artisan correspondantes pour gérer le nettoyage OPcache : https://github.com/appstract/laravel-opcache.

Après avoir installé l'extension, exécutez simplement la commande suivante pour nettoyer l'OPcache :

php artisan opcache:clear
Copier après la connexion

De plus, le package d'extension fournit également d'autres outils utiles, que vous pouvez utiliser dans le Vu sur la page GitHub .

Cet article est réimprimé, adresse originale : https://xueyuanjun.com/post/7326

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:xueyuanjun.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal