Maison  >  Article  >  développement back-end  >  Conseils pour améliorer les performances de PHP7 à l'aide de l'extension OPcache

Conseils pour améliorer les performances de PHP7 à l'aide de l'extension OPcache

coldplay.xixi
coldplay.xixiavant
2021-02-11 10:18:012563parcourir

PréfaceConseils pour améliorer les performances de PHP7 à l'aide de l'extension OPcache

Il est onze heures et demie, et il est il est temps de s'installer.

Lorsque PHP est en cours d'exécution, il existe un tel processus. Le code PHP est d'abord pré-compilé, le bytecode est généré puis chargé dans la mémoire. Enfin, le CPU exécute les octets compilés sur le. fragment de code de mémoire. Nous constaterons que lors de l'exécution d'un programme PHP, nous passons par un tel processus à chaque fois. Ce n'est pas une perte de temps. Oui, il est facile de penser : pourquoi ne pas suivre le langage C++ et compiler le code source dans un fichier qui. peut être directement chargé dans la mémoire, alors Où est mon frère ? Euh-hein ?. Sortez votre fusil et chargez cette balle . Depuis la sortie de PHP5.5.0, cette extension zend a été intégrée.


Qu'est-ce que OPcache

est une extension Zend en PHP qui peut grandement améliorer les performances de PHP.
OPcache améliore les performances de PHP en stockant le bytecode précompilé des scripts PHP dans la mémoire partagée. L'avantage du stockage du bytecode précompilé est qu'il évite la surcharge de chargement et d'analyse des scripts PHP à chaque fois.

OPcache


Jugez s'il a été étendu OPcache

➜  ~ php -m | grep OPcache
Zend OPcache
Zend OPcache
S'il n'est pas activé, vous pouvez l'activer dans la configuration php.ini
/home /samego/service/php7.2/php.iniOPcache
➜  ~ echo zend_extension="opcache.so" >> /home/samego/service/php7.2/php.ini


À propos de la configuration d'OPcacheEnsuite, nous devons activer OPcache dans PHP fichier de configuration (La valeur par défaut est désactivée) :

opcache.enable=1
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 Une valeur supérieure à 64 fera l'affaire.
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.

Donc, 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

Apprendre de la communauté Laravel

Laravel OPcache

installer你可以使用这些配置值进行实验,具体配置值取决于你的应用大小和服务器配置。

➜  ~ composer require appstract/laravel-opcache


configurer

➜  ~ php artisan vendor:publish --provider="Appstract\Opcache\OpcacheServiceProvider" --tag="config"
commande
  • # Clear OPcache:
    ➜  ~ php artisan opcache:clear
    
    # Show OPcache config:
    ➜  ~ php artisan opcache:config
    
    # Show OPcache status:
    ➜  ~ php artisan opcache:status
    
    # Pre-compile your application code:
    ➜  ~ php artisan opcache:optimize
  • Test de scénario Stand-and-see
  • Personnellement, j'aime que les données parlent
  • Scénario : (1) Demander l'interface GET (2) Le numéro des tests est de 10 (3) Le nombre de concurrence est de 100

1000 requêtes, prenant 32,32 secondes, 30,94 requêtes par seconde

Transactions:               1000 hits
Availability:             100.00 %
Elapsed time:              32.32 secs
Data transferred:           0.97 MB
Response time:              0.32 secs
Transaction rate:          30.94 trans/sec
Throughput:             0.03 MB/sec
Concurrency:                9.96
Successful transactions:        1000
Failed transactions:               0
Longest transaction:            0.44
Shortest transaction:           0.11


1000 requêtes, en 2,94 secondes, 340,14 requêtes par secondecase non-extension

Transactions:               1000 hits
Availability:             100.00 %
Elapsed time:               2.94 secs
Data transferred:           0.97 MB
Response time:              0.03 secs
Transaction rate:         340.14 trans/sec
Throughput:             0.33 MB/sec
Concurrency:                9.86
Successful transactions:        1000
Failed transactions:               0
Longest transaction:            0.29
Shortest transaction:           0.01

En voyant cet ensemble de données, je suis très heureux, extrêmement heureux. En termes de performances, il y a un contraste tellement fort que je ne dirai rien~OPcache a raison

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer