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
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
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
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();
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
Ensuite, nous continuons à faire quelques configurations d'optimisation pour OPcache :
opcache.memory_consumption=512
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
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
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
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
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
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
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
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!