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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!