Maison > développement back-end > tutoriel php > Comprendre Opcache

Comprendre Opcache

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-20 08:38:10
original
857 Les gens l'ont consulté

Comprendre Opcache

Les plats clés

  • OPCACHE est un moteur de mise en cache intégré dans PHP 5.5 qui stocke des bytecode de script précompilé en mémoire, conduisant à des augmentations de performances dans les applications PHP. Il peut être installé comme extension sur les versions PHP plus anciennes et peut réduire le temps de réponse moyen d'un site Web jusqu'à 14%.
  • OPCACHE est une meilleure solution que le cache APC, car APC ne prend pas en charge les versions PHP plus récentes et peut conduire à des erreurs d'exécution. Opcache est plus étroitement lié à PHP lui-même, entraînant des mises à jour plus fréquentes et moins d'erreurs. Cependant, contrairement à l'APC, Opcache ne fonctionne pas comme un moteur de mise en cache de données.
  • Pour vérifier si OPCACHE fonctionne correctement, on peut utiliser les fonctions OPCACHE_GET_CONFIGURATION () et OPCACHE_GET_STATUS (). Il existe également plusieurs scripts préparés disponibles qui rapportent toutes les données de configuration et d'état OPCACHE et les afficher de manière conviviale.
  • Il est possible que Opcache soit activé dans un projet et désactivé dans un autre sur un seul serveur. Ceci est réalisé en activant Opcache au niveau global, puis en le désactivant dans des projets spécifiques en utilisant la fonction ini_set ().

PHP dans la version 5.5 est livré avec un moteur de mise en cache intégré - Opcache - qui stocke des bytecode de script précompilé dans la mémoire. Si vous connaissez APC ou XCACH, vous saurez déjà comment ces moteurs fonctionnent. Comme chaque script PHP est compilé lors de l'exécution, une partie du temps d'exécution est utilisée pour transformer le code lisible humain en code qui peut être compris par la machine. Un moteur de cache bytecode comme OPCACH, APC ou XCACHE ne le fait qu'une seule fois - lors de la première exécution d'un fichier PHP spécifique. Ensuite, le script précompilé est stocké en mémoire, ce qui devrait entraîner des augmentations de performances de vos applications PHP.

Sur le Web, vous trouverez facilement de nombreux tutoriels couvrant toutes les étapes d'installation et de configuration OPCACH (il est activé par défaut sur 5.5, mais peut être installé comme extension sur les anciennes versions). Lisez l'article ci-dessous pour trouver les réponses à certaines des questions typiques concernant différents aspects pratiques du travail avec ce moteur de cache particulier.

1. Opcache vaut-il la peine d'être installé? Quel boost de vitesse puis-je m'attendre?

Bien sûr, cela dépend. Si votre serveur parvient à gérer le trafic entrant et à conserver de faibles temps de réponse, vous ne ressentirez probablement pas le besoin de travailler sur les performances. Mais sur un site Web plus grand avec beaucoup de trafic, chaque petite étape d'optimisation peut compter. La mise en œuvre d'Opcache peut vous permettre de gérer plus de demandes par seconde et de renvoyer la réponse plus rapidement que sans moteur de mise en cache bytecode. Comme Opcache est assez facile à installer et à configurer, vous ne passerez pas trop de temps à tout régler.

Si vous recherchez des tests de performances OPCACH, vous devez certainement lire l'article AppDynamics sur la mise en œuvre de ce moteur de cache. Dans leurs tests, l'installation d'Opcache a réduit le temps de réponse moyen d'un site Web de 14%. La réduction des temps de réponse des différentes actions d'une application Web variait de 6% à 74%. Comme expliqué dans l'article, différentes pièces de code peuvent bénéficier plus ou moins de la mise en œuvre d'un moteur de mise en cache Bytecode. Je vous encourage à lire l'article en détail et à vérifier où vous pouvez obtenir la plus haute augmentation des performances.

Si vous recherchez d'autres ressources concernant les performances OPCACH, consultez les exemples sur fideloper.com et massivescale.com. Les deux tests ont rapporté environ 50% de diminution du temps de réponse après l'installation d'Opcache.

2. J'utilise déjà APC Cache. Dois-je migrer vers Opcache?

Je pense que vous devriez. Il y a quelques avantages qui peuvent faire d'Opcache une meilleure solution qu'APC.

Tout d'abord, le cache APC ne fonctionnera pas avec les dernières versions PHP. Il ne prend pas du tout le PHP 5.5. Il n'est pas non plus conseillé de l'installer sur PHP 5.4, car il a été signalé qu'une telle configuration peut entraîner des erreurs d'exécution qui brisent l'ensemble de l'application. Vérifiez simplement l'article Wikipedia sur les accélérateurs PHP ou ce fil de débordement de pile pour obtenir des détails.

OPCACHE, cependant, est regroupé avec PHP 5.5, il fonctionnera donc certainement avec cette version PHP. Comme écrit dans la documentation, il peut également être installé avec des versions PHP plus anciennes - de 5.2 à 5.4. Généralement, Opcache est plus étroitement lié à PHP lui-même que les autres moteurs de cache Bytecode - qui peuvent entraîner des mises à jour plus fréquentes et moins d'erreurs (lire ici pour plus de détails).

La seule chose importante à retenir lors de la migration de l'APC à Opcache est le fait que ce dernier ne fonctionne pas comme un moteur de mise en cache de données. Si vous avez déjà implémenté APC, vous pouvez utiliser ses fonctions APC_ADD () et APC_Fetch () qui servent d'interface à un service de mise en cache de données. Opcache n'est qu'un moteur de mise en cache bytecode, il n'offre donc pas de fonctionnalité similaire. Si vous prévoyez de passer d'APC à Opcache, n'oubliez pas de considérer cette limitation. Gardez à l'esprit que si vous souhaitez conserver la fonctionnalité APC Userland, il y a le projet APCU (merci à Oscar Merina de l'avoir signalé dans les commentaires).

3. Comment vérifier si Opcache cache réellement mes fichiers?

Si vous avez déjà installé et configuré Opcache, vous pouvez trouver important de contrôler les fichiers PHP réellement mis en cache. L'ensemble du moteur Cache fonctionne en arrière-plan et est transparent pour un visiteur ou un développeur Web. Afin de vérifier son statut, vous pouvez utiliser l'une des deux fonctions qui fournissent ces informations: opcache_get_configuration () et opcache_get_status (). Heureusement, il y a quelques scrips préparés qui rapportent toutes les données de configuration et d'état OPCACH et les afficher de manière conviviale. Vous n'avez pas besoin d'écrire de code par vous-même, il suffit de prendre l'un des outils ci-dessous:
- Panneau de commande Opcache,
- Opcache-status par Rasmus Lerdorf,
- Opcachegui par Pieter Hordijk,
- Opcache-Gui par Andrew Collington.

Dans mes projets, j'utilise le script Opcache-Gui qui a toutes les fonctionnalités dont j'ai besoin. Pour vérifier si le moteur de mise en cache fonctionne correctement, regardez simplement les pourcentages de l'onglet «Présentation» de la page Opcache-Gui. Si l'utilisation de la mémoire et les valeurs de taux de succès sont supérieures à zéro, cela signifie que l'Opcache cache le code PHP et que les fichiers mis en cache sont utilisés pour gérer les demandes. Pour voir une liste de fichiers PHP spécifiques qui sont mis en cache, accédez simplement à l'onglet «Utilisation du fichier». Recherchez la liste des fichiers pour vous assurer que les fichiers à l'intérieur de vos projets ont été mis en cache.

Comprendre Opcache

4. Y a-t-il une configuration spécifique au framework que je devrais définir?

Fondamentalement, le moteur Opcache doit être transparent pour vous en tant qu'écrivain de code. Cela signifie que vous pouvez mettre tout code que vous souhaitez dans votre application (qui fonctionne avec la version PHP que vous utilisez) et Opcache devrait le gérer correctement. Mais cela ne fonctionnera que si la configuration OPCACHE est définie de manière correcte. Une mauvaise configuration de moteur de cache peut briser l'ensemble de votre site Web.

Tout d'abord, probablement dans chaque projet typique, vous devrez vous assurer que l'option opcache.use_cwd est définie sur true. L'activation de ce paramètre signifie que le moteur Opcache examinera les chemins de fichier complets pour distinguer les fichiers avec les mêmes noms. Le définir sur false conduira à des collisions entre les fichiers avec le même nom de base.

Il existe également un paramètre qui est important dans les outils et les cadres qui utilisent des annotations. Si vous utilisez la doctrine, l'unité Zend Framework 2 ou PHP, n'oubliez pas de définir les paramètres d'Opcache.load_comments et d'opcache.save_comments sur true. En conséquence, les commentaires de la documentation de vos fichiers seront également inclus dans le code précompilé généré par Opcache. Ce paramètre vous permettra de travailler avec des annotations sans aucune perturbation.

Si votre projet est basé sur un framework spécifique ou une application Web, c'est toujours une bonne idée de vérifier la documentation de toute directive concernant la configuration OPCACHE. Par exemple, il existe un exemple de configuration pour Moodle ici.

5. Je garde ma configuration d'application dans un fichier PHP. Puis-je l'empêcher d'être mis en cache?

Si votre projet contient des fichiers qui sont modifiés plus fréquemment que les autres, vous pouvez les exclure de la mise en cache. Il peut être particulièrement pratique lorsque vous traitez avec des fichiers PHP contenant des directives de configuration pour votre site Web. Si vous les empêchez d'être mis en cache, vous pouvez être sûr que chaque changement dans un tel fichier sera immédiatement visible dans votre application.

OPCACHE vous permet de spécifier un fichier de liste noire qui contient tous les chemins qui ne seront pas traités par le moteur de mise en cache. Après avoir défini la directive OPCACHE.BLACKLIST_FILENAME, placez simplement la liste de fichiers appropriée dans le chemin que vous avez spécifié. La page de documentation contient quelques exemples sur la façon d'exclure des fichiers spécifiques du cache.

6. Comment puis-je exécuter à la fois un développement et un environnement de production sur un seul serveur où Opcache est activé?

Si votre serveur exécute plusieurs applications, vous pouvez être prêt à utiliser OPCACH uniquement dans certains d'entre eux. Les sites de développement et de test sont des exemples de tels environnements où la mise en cache ByteCode activée n'est pas préférable et peut causer plus de mal que de bien.

Heureusement, il est possible que Opcache soit activé dans un projet et désactivé dans un autre, le tout sur un seul serveur. Pour ce faire, vous devez d'abord activer l'OPCACH au niveau global en définissant la directive OPCACH.Enable à TRUE dans votre fichier php.ini. Ensuite, si vous ne souhaitez pas utiliser la mise en cache ByteCode dans l'un de vos projets, désactivez-le simplement en définissant la même directive sur FALSE en utilisant la fonction INI_SET (). Donc, vous devez d'abord activer la mise en cache à l'échelle mondiale, puis vous pouvez le désactiver dans certains projets «localement». Vous ne pouvez pas faire le contraire - l'activation de la mise en cache en utilisant INI_SET () n'est pas autorisée.

Définition OPCACHE.Enable To False dans un fichier supérieur de votre projet désactivera la mise en cache tout en le gardant ailleurs.

Résumé

J'espère que cet ensemble de questions et réponses courantes vous a donné quelques informations pratiques sur la façon d'utiliser OPCACH dans une application PHP. Si vous avez d'autres questions ou commentaires concernant le sujet, n'hésitez pas à les publier ci-dessous. Vous pouvez également me contacter via Google Plus.

Des questions fréquemment posées sur Opcache

Quelle est la fonction principale de l'opcache dans PHP?

OPCACHE est une puissante extension PHP qui améliore les performances PHP en stockant des bytecode de script précompilé dans la mémoire partagée. Cela élimine la nécessité pour PHP de charger et d'analyser les scripts sur chaque demande, réduisant ainsi le temps d'exécution et l'utilisation de la mémoire. Il est particulièrement bénéfique pour les sites Web avec un trafic élevé ou des applications complexes, car il peut considérablement accélérer le temps de chargement et améliorer les performances globales.

En quoi Opcache diffère-t-elle des autres mécanismes de mise en cache?

Contrairement à d'autres Mécanismes de mise en cache qui stockent la sortie des scripts PHP, Opcache stocke le bytecode précompilé des scripts PHP. Cela signifie qu'il n'a pas à recompiler le code PHP chaque fois qu'une demande est faite, ce qui permet d'économiser beaucoup de temps et de ressources de traitement. Cela fait d'Opcache une solution plus efficace et efficace pour améliorer les performances de PHP.

Comment puis-je activer OPCACH dans ma configuration PHP?

Pour activer OPCACHE, vous devez modifier votre fichier php.ini. Recherchez la section étiquetée [OPCACHE] et modifiez la valeur d'Opcache.enable à 1. Si la section ou la directive n'existe pas, vous pouvez les ajouter. Après avoir apporté les modifications, enregistrez le fichier et redémarrez votre serveur Web pour que les modifications prennent effet.

Comment puis-je vérifier si Opcache fonctionne correctement?

Vous pouvez vérifier l'état d'Opcache par Utilisation de la fonction opcache_get_status () en php. Cette fonction renvoie un tableau d'informations sur l'état OPCACH, y compris les paramètres de configuration, l'utilisation de la mémoire et la vitesse de vie. Vous pouvez utiliser ces informations pour vérifier si OPCACHE fonctionne correctement et efficacement.

Puis-je effacer manuellement l'opcache?

Oui, vous pouvez effacer manuellement l'opcache en utilisant la fonction opcache_reset () dans PHP. Cette fonction effacera l'Opcache et forcera PHP à recompiler les scripts sur la prochaine demande. Cependant, gardez à l'esprit que le nettoyage de l'Opcache peut fréquemment peut avoir un impact négatif sur les performances, car il bat le but de la mise en cache.

Y a-t-il des problèmes ou des limitations potentiels avec Opcache?

Alors que l'opcache peut significativement Améliorer les performances de PHP, ce n'est pas sans ses problèmes ou limitations potentiels. Par exemple, il peut entraîner des problèmes avec des sessions basées sur des fichiers ou un stockage de données utilisateur basé sur des fichiers, car il ne recompile pas les scripts à moins que le délai de fichier ne change. De plus, il peut ne pas être aussi efficace pour les sites Web à faible trafic ou applications simples, car le gain de performances peut ne pas être perceptible.

Comment puis-je optimiser la configuration OPCACH pour des performances maximales?

Il existe plusieurs directives de configuration que vous pouvez modifier pour optimiser les performances OPCACH. Par exemple, vous pouvez augmenter l'opcache.memory_consomption pour allouer plus de mémoire pour stocker le bytecode précompilé. Vous pouvez également ajuster l'opcache.revalidate_freq pour contrôler la fréquence à laquelle Opcache vérifie les modifications des scripts.

est compatible OPCACH avec toutes les versions PHP?

OPCACHE est compatible avec PHP 5.2 et ci-dessus. Cependant, il est inclus par défaut à partir de PHP 5.5. Pour les versions antérieures, vous devez l'installer comme extension PECL.

Puis-je utiliser OPCACHE avec d'autres mécanismes de mise en cache?

Oui, vous pouvez utiliser OPCACHE en conjonction avec d'autres mécanismes de mise en cache comme Memcached ou Redis. Alors qu'Opcache améliore les performances de PHP en mettant en cache le bytecode précompilé, d'autres mécanismes de mise en cache peuvent améliorer davantage les performances en mettant en cache les requêtes de base de données ou la sortie des scripts PHP.

Est-ce que OpCache convient à tous les types de sites Web ou d'applications? 🎜>

OPCACHE est particulièrement bénéfique pour les sites Web avec un trafic élevé ou des applications complexes, car elle peut accélérer considérablement le chargement temps et améliorer les performances globales. Cependant, il peut ne pas être aussi efficace pour les sites Web à faible trafic ou des applications simples, car le gain de performances peut ne pas être perceptible. En outre, cela peut entraîner des problèmes avec des séances basées sur des fichiers ou un stockage de données utilisateur basé sur des fichiers, donc il ne convient pas à tous les types de sites Web ou d'applications.

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