Maison  >  Article  >  développement back-end  >  Accélération de l'optimisation PHP Opcache

Accélération de l'optimisation PHP Opcache

小云云
小云云original
2018-03-27 11:53:381518parcourir

Opcache est une méthode qui évite la surcharge de chargement et d'analyse des scripts PHP à chaque fois en stockant le bytecode précompilé du script PHP analysé dans la mémoire partagée, l'analyseur peut lire directement les octets mis en cache à partir du code de la mémoire partagée, ce qui est grandement utile. améliorer l'efficacité d'exécution de PHP. PS : Il faut le distinguer du mécanisme Xcache, et son utilisation sera présentée dans le résumé suivant.

· Comment installer

· Comment configurer

· Comment utiliser

· Analyse d'affichage

· Choses à noter

1. Comment installer

Dans PHP 5.5.0 et les versions ultérieures, PHP a intégré la fonction Opcache dans la version finale sous la forme d'une bibliothèque d'extension n'est pas activée par défaut. , et les développeurs doivent utiliser php. Ajoutez ou décommentez simplement la configuration liée à Opcache dans ini. Pour les anciennes versions, Opcache peut être installé et configuré en tant que bibliothèque d'extension PECL.

REMARQUE :

Si vous utilisez le paramètre --disable-all pour désactiver la construction de l'extension par défaut, vous devez utiliser l'option --enable-opcache pour activer Opcache.

2. Comment configurer

php.ini :

[opcache]

 ; Activer la mise en cache des opcodes

opcache.enable= 1

; Le cache d'opcode pour PHP prenant en charge la version CLI est généralement utilisé pour les tests et le débogage

opcache.enable_cli=1

Taille de la mémoire partagée en Mo

opcache.memory_consumption=128

; Stocke la taille du cache de chaîne temporaire en Mo. Cette configuration était ignorée avant PHP5.3.0

opcache.interned_strings_buffer=8

; limite maximale sur le nombre de fichiers mis en cache, le taux de réussite est inférieur à 100%, vous pouvez essayer d'augmenter cette valeur

opcache.max_accelerated_files=4000

Vérifiez l'heure de modification du fichier ; dans un certain laps de temps, définissez ici la période de vérification, la valeur par défaut est 2, l'unité est la seconde

opcache.revalidate_freq=60

 Activez l'arrêt rapide de l'événement continu ; , en s'appuyant sur le module de gestion de la mémoire du moteur Zend, une fois Libérez la mémoire de toutes les variables de requête au lieu de libérer les blocs de mémoire de manière séquentielle

opcache.fast_shutdown=1

 ; l'existence et la lisibilité des scripts PHP, que le fichier ait été mis en cache ou non, vérifieront le cache des opcodes, ce qui peut améliorer les performances. Mais si désactivé L'option opcache.validate_timestamps peut risquer de renvoyer des données obsolètes.

opcache.enable_file_override=1

; Bibliothèque d'extension donc chargement des fichiers associés

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts -20131226/opcache.so

REMARQUE :

Les éléments de configuration répertoriés ci-dessus sont des éléments de configuration couramment utilisés et importants, mais il existe en réalité plus que ces éléments de configuration.

3. Comment utiliser

En fait, l'utilisation d'Opcache se reflète principalement dans les différentes fonctions qu'il propose :

1. Format : array opcache_get_configuration(void);

Obtenir les informations de configuration du cache définies et renvoyer les informations de configuration, la liste noire et le numéro de version sous la forme d'un tableau.

2. opcache_get_status;

Formulaire : tableau opcache_get_status(void);

Obtenir les informations sur l'état du cache défini.

3. opcache_invalidate;

Formulaire : boolean opcache_invalidate (string);

La fonction de cette fonction est d'invalider le cache de bytecode du script spécifié. Si

force

n'est pas défini ou si FALSE est transmis, alors le cache du script ne sera invalide que lorsque l'heure de modification du script est plus récente que l'heure du bytecode correspondant. 4. opcache_reset;

Formulaire : boolean opcache_reset(void);

Cette fonction réinitialisera l'intégralité du cache de bytecode. Après avoir appelé opcache_reset(), tous les scripts seront rechargés et analysés la prochaine fois que vous cliquerez sur eux.

5. opcache_compile_file;

Formulaire : boolean opcache_compile_file (string);

Vous pouvez compiler et mettre en cache le script sans l'exécuter.

6. opcache_is_script_cached

Formulaire : boolean opcache_is_script_cached (string);

Détermine si un script a été mis en cache dans Opcache.

Ci-dessous, j'écrirai un script PHP qui encapsule les fonctions ci-dessus, qui facilitera également la maintenance et la gestion d'Opcache à l'avenir :

<?php
/**
 * 这个文件是对opcache优化器的几个
 * 函数的封装,作为一个工具脚本使用
 */
if(!extension_loaded("ZendOpcache")) {
      echo "You do nothave the Zend OPcache extension loaded , please open it up,then retry!";
}
/**
 * 函数操作封装类
 * 数组形式的结果,会转为json格式返回,不做显示上的处理
 * 这里主要处理的是影响Opcache缓存状态的操作,对于查看
 * Opcache各项指标的处理,可查看项目:opcache-status
 */
class OpcacheScriptModel{
      private $_configuration;
      private $_status;
      function __construct() {
            $this->_configuration =opcache_get_configuration();
            $this->_status =opcache_get_status();
      }
      // 获取配置信息
      public function getConfigDatas(){
            echo json_encode($this->_configuration);
      }
      // 获取状态信息
      public function getStatusDatas(){
            echo json_encode($this->_status);
      }
      // 指定某脚本文件字节码缓存失效
      public function invalidate($script){
            return opcache_invalidate($script);
      }
      // 重置或清除整个字节码缓存数据
      public function reset() {
            return opcache_reset();
      }
      // 无需运行,就可以编译并缓存脚本
      public function compile($file){
            return opcache_compile_file($file);
      }
      // 判断某个脚本是否已经缓存到Opcache
      public function isCached($script){
            return opcache_is_script_cached($script);
      }
}
// 获得对象
function getOpcacheDataModel(){
      // 初始化对象
      $dataModel = NULL;
      if(NULL ==$dataModel) {
            $dataModel = new OpcacheScriptModel();
      }
      return $dataModel;
}
?>

Comparaison de. Les outils de script ci-dessus Simple, il peut généralement être placé dans un projet ou utilisé comme un outil séparé. Il peut être analysé et compilé en cas de besoin. En fait, l'affichage et l'analyse suivants des projets open source utilisent également la fonction API ci-dessus, mais. il affichera les données obtenues sous forme graphique, c'est plus intuitif, veuillez continuer à lire.

4. Analyse de l'affichage

Nous savons que le mécanisme d'exécution des scripts PHP est que l'analyseur analyse le fichier de script PHP et l'analyse en données de bytecode, et le rôle de l'optimiseur Opcache est la mise en cache. Les données de bytecode analysées peuvent être lues directement à partir du cache sans répéter le chargement et l'analyse du script PHP à chaque fois. Par conséquent, pour utiliser Opcache, nous n'avons généralement besoin de faire que deux choses :

1. Optimiseur Opcache pour accélérer l'exécution des programmes PHP ;

2. Comprendre l'état des performances du programme PHP actuel en temps réel grâce à divers indicateurs et paramètres d'Opcache

Ensuite, nous comment ; visualiser et analyser l'effet d'accélération actuel d'Opcache ? La réponse est d'utiliser le projet open source sur Github : https://github.com/rlerdorf/opcache-status

Mettez le projet téléchargé dans le répertoire racine du serveur Web actuel et accédez-y directement, regardez à l'effet en premier :


Comme le montrent les captures d'écran et les fichiers de projet ci-dessus, l'outil Opcache est une version GUI simplifiée. Utiliser Il peut clairement comprendre et analyser le contenu suivant :

1. Utilisation du cache, état restant, gaspillage de mémoire et proportion ;

2. 🎜>3. Nombre de succès et d'échecs du cache ;

4. Configuration du cache, statut et script de capture du cache

5. Fichiers de script de cache, divisés et affichés intuitivement sous forme de vues ;

D'accord, c'est tout pour la visualisation d'Opcache. Jetons un coup d'œil à quelques points à noter.

5. Notes

1. Il n'est pas recommandé d'activer l'optimisation PHP pour Xcache et Opcache en même temps

Parce que PHP 5.5.0 et les versions ultérieures ont été construits ; -dans la prise en charge d'Opcache, PHP réalise donc son importance Par rapport aux optimiseurs PHP tiers tels que Xcache, l'utilisation d'Opcache sera un meilleur choix. De plus, si les deux existent en même temps, le nombre d'accès au cache d'Opcache sera considérablement réduit et une surcharge inutile sera ajoutée.

2. Il n'est pas recommandé d'activer Opcache pendant le processus de développement

La raison est évidente Après avoir activé Opcache, le contenu modifié par le développeur ne sera pas affiché et prendra effet immédiatement. car il est affecté par opcache.revalidate_freq=60 Par conséquent, il est recommandé d'activer Opcache lors des tests de performances après le développement et les tests. Bien entendu, Opcache doit toujours être activé dans l'environnement de production.

3. Il n'est pas recommandé de définir des indicateurs Opcache trop grands.

La taille de configuration de chaque indicateur Opcache ou son activation doit être combinée avec les besoins réels du projet et du projet. configuration recommandée par le responsable d'Opcache, et la situation réelle du projet doit être analysée, ce qui peut être combiné avec l'analyse et l'ajustement des informations du cache visuel dans la partie 4 ci-dessus.

4. Il n'est pas recommandé d'utiliser l'ancienne version d'Opcache pendant une longue période

Il est recommandé de prêter attention au site officiel d'Opcache à temps pour connaître ses corrections de bugs, optimisation des fonctions et nouvelles fonctions en temps réel, afin de mieux les appliquer dans vos propres projets.

5. Il n'est pas recommandé de mettre le projet open source présenté ci-dessus dans le répertoire racine du service web dans un environnement de production

La raison est très simple, car ce projet open source n'a pas restrictions d'accès et traitement de sécurité , c'est-à-dire que tout utilisateur pouvant accéder au réseau externe peut y accéder directement tant qu'il connaît l'adresse d'accès, ce n'est donc pas sûr. Généralement, cet outil open source permet uniquement d'analyser visuellement les performances de PHP et est généralement utilisé pendant la phase de développement et de débogage. Si vous souhaitez simplement l'activer dans un environnement de production, vous devez appliquer des restrictions de sécurité.

Recommandations associées :

Partage de la façon d'utiliser l'accélération Opcache en PHP

L'utilisation d'opcache en PHP

Résumé de l'utilisation d'Opcache pour l'optimisation et l'accélération PHP

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:
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