Zend, la société derrière l'équipe de développement PHP, a récemment rendu open source son produit d'accélération PHP Zend Optimizer. Le nouveau projet est hébergé sur Github et le nom du projet est ZendOptimizerPlus. Aujourd'hui, nous allons parler de ZendOpcache.
Introduction
Zend Optimizer + accélère l'exécution de PHP en mettant en cache et en optimisant les opcodes. Il améliore les performances de PHP en stockant les scripts PHP précompilés dans la mémoire partagée. Cette opération élimine le besoin de lire à partir du disque. Fichiers PHP puis compilation. De plus, il fournit également une petite quantité de mode d'optimisation du bytecode pour rendre le code plus rapide.
Applicabilité
La version actuelle de Zend Optimizer + est adaptée à PHP 5.2.*, 5.3. *, 5.4.* et la branche de la version de développement PHP-5.5. Le support de PHP 5.2 pourrait être supprimé à l'avenir
Installation
Téléchargez d'abord le code source de Zend Optimizer + :
http://pecl.php.net/package/ZendOpcache
Actuellement, j'utilise. Version bêta 7.0 .1, téléchargez et décompressez, compilez :
wget http://pecl.php.net/get/zendopcache-7.0.1.tgz tar xzf zendopcache-7.0.1.tgz cd zendopcache-7.0.1 phpize ./configure --with-php-config=/path_to_php_bin/php-config make make install
ConfigurationModifier php.ini
zend_extension=/...full_path.../opcache.so #以下是开发组推荐配置 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1
Redémarrez votre php cgi ou Apache.
Explication détaillée des paramètres de configuration
opcache.enable( Valeur par défaut : 1)
Zend Optimizer + switch, le code n'est plus optimisé lorsqu'il est éteint.
opcache.memory_consumption(Valeur par défaut : 64)
Zend Optimizer + taille de la mémoire partagée, combien de préréglages peuvent être stocké dans le code PHP compilé total (Unité : Mo).
Zend Optimizer + le nombre maximum de clés dans la table de hachage (un fichier script doit correspondre à une clé, il doit donc s'agir du nombre maximum de fichiers autorisés à être mis en cache) . Cette valeur est en fait le premier nombre de la liste de nombres premiers {223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987} qui est supérieur à la valeur définie : 200 –. 100000
Lorsque la mémoire "gaspillée" atteint le pourcentage correspondant à cette valeur, un programme de redémarrage sera lancé.
Activez cette commande, Zend Optimizer + ajoutera automatiquement le nom du répertoire de travail actuel à la clé de script pour éliminer les conflits de nom clé-valeur entre les fichiers portant le même nom. La désactivation de cette commande améliorera les performances, mais. endommagera les applications existantes.
Lorsque désactivé, vous devez réinitialiser manuellement Zend Optimizer+ ou redémarrer le serveur Web pour que les modifications du système de fichiers prennent effet. La fréquence des vérifications. est déterminé par la directive "opcache.revalidate_freq" ” Control.
À quelle fréquence (en secondes) vérifier l'horodatage du fichier pour modifier l'allocation de la mémoire partagée "1. " signifie vérifier une fois par seconde, mais une fois par requête. " 0 " signifie toujours vérifier. désactivé et le fichier mis en cache peut être trouvé dans le même chemin d'inclusion, et la recherche de fichier ne sera plus effectuée. Par conséquent, s'il existe un fichier avec le même nom ailleurs dans le chemin d'inclusion, il ne sera pas trouvé si cette optimisation a été effectuée. un impact sur votre application, alors elle devrait être autorisée à rechercher. Par défaut, la directive est désactivée, ce qui signifie que l'optimisation est active
Si désactivée, tous les documents. Les commentaires sont supprimés du code pour réduire la taille du code optimisé. La désactivation des « commentaires de documentation » peut casser certaines applications et frameworks existants (par exemple : Doctrine, ZF2, PHPUnit
S'ils sont désactivés, les commentaires de la documentation PHP ne seront pas lus depuis SHM (mémoire partagée). Bien que les "commentaires de documentation" soient toujours stockés (save_comments=1), ils ne seront de toute façon pas utilisés. application.
Si elle est activée, une file d'attente d'arrêt rapide est utilisée pour accélérer le code. La file d'attente d'arrêt rapide ne libère pas chaque bloc alloué, laissant plutôt la mémoire du Zend Engine. manager fait le travail.
Permet aux fonctionnalités d'optimisation de remplacer l'existence des fichiers (file_exists, etc.).
Un masque de bits où chaque bit autorise ou désactive le passage de cache correspondant
.
L'activation de ce hack peut résoudre temporairement l'erreur "Impossible de redéclarer la classe". Zend Optimizer + est l'endroit où les opcodes DECLARE_CLASS sont stockés en utilisant l'héritage (ce sont les seuls opcodes qui peuvent être exécutés par PHP, mais ils peuvent également être causés par l'optimisation) La classe est introuvable et ne peut pas être exécutée). Lorsque le fichier est lu, l'optimiseur essaiera de lier la classe héritée via l'environnement actuel. Le problème est que l'opcode DECLARE_CLASS peut ne pas être nécessaire au script actuel. script L'opcode est requis pour au moins terminer l'opération de définition de classe, alors il ne sera pas exécuté. La valeur par défaut de cette commande est désactivée, ce qui signifie que l'optimisation n'est plus requise dans PHP 5.3 et supérieur, et cela. paramètre Cela ne prendra pas effet.
opcache.dups_fix(Par défaut : 0)
L'activation de ce hack peut résoudre temporairement l'erreur "Impossible de redéclarer la classe".
opcache.blacklist_filename(Par défaut Valeur : Aucun)
Zend Optimizer + L'emplacement du fichier de la liste noire.
Zend Optimizer + La liste noire est un fichier texte contenant les noms des fichiers qui ne peuvent pas être accélérés. Le format de fichier est un nom de fichier par ligne. être un chemin complet ou un préfixe de fichier (par exemple : /var/www/x bloque tous les fichiers ou répertoires commençant par « x » dans les fichiers et répertoires /var/www. Les fichiers qui doivent être bloqués répondent généralement aux trois éléments suivants). raisons L'une des suivantes :
1) Le répertoire contient du code généré automatiquement, tel que le cache Smarty ou ZFW.
2) Le code ne s'exécute pas correctement lors de l'accélération, retardant ainsi l'évaluation à la compilation.
3) Le code déclenche un Zend Optimizer. + Bug
opcache.max_file_size(Par défaut : 0)
Mise en cache d'écran des fichiers volumineux par taille de fichier.
opcache.consistency_checks(Valeur par défaut : 0)
Vérifiez la vérification du cache toutes les N demandes. La valeur par défaut de 0 signifie que la vérification est désactivée. Étant donné que le calcul de la valeur de vérification nuit aux performances, cette commande doit être activée pendant le développement et le débogage.
opcache.force_restart_timeout( Par défaut : 180)
Combien de temps attendre (en secondes) pour planifier un redémarrage après que le cache n'est pas accédé. Zend Optimizer + s'appuie sur cette commande pour déterminer quand un processus peut avoir des problèmes pendant le traitement après cette période (temps d'attente). ), il est supposé que Zend Optimizer + a quelques problèmes et commence à tuer les processus qui détiennent encore le verrou de prévention de redémarrage. Lorsque cela se produit, si le niveau de journalisation est 3 ou supérieur, une erreur "casier tué" sera enregistrée. le journal Apache.
opcache.error_log(Par défaut : Aucun)
Zend Optimizer + nom du fichier journal des erreurs Laissez vide pour utiliser la sortie d'erreur standard (stderr) .
opcache.log_verbosity_level(Par défaut. : 1)
Directez les messages d'erreur vers le journal du serveur Web. Par défaut, seules les erreurs fatales (niveau 0) ou les erreurs (niveau 1) seront enregistrées. Vous pouvez également autoriser les avertissements (niveau 2) et les messages d'invite (niveau 3). ou les messages de débogage (niveau 4) à enregistrer
opcache.preferred_memory_model (Par défaut : aucun)
Le backend préféré pour le partage de mémoire. Laissez le champ vide pour laisser le système choisir.
opcache.protect_memory. (Par défaut : 0)
Empêcher l'écriture accidentelle de la mémoire partagée lors de l'exécution du script, uniquement pour le débogage interne.
opcache.mmap_base(Par défaut : Aucun)
Base de mappage des segments de mémoire partagée (Windows uniquement). Tous les processus PHP doivent être mappés sur le même espace d'adressage de mémoire partagée. Cette directive est utilisée pour corriger manuellement les erreurs « Impossible de se rattacher à l'adresse de base ».
Apprentissage recommandé : Tutoriel vidéo 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!