PHP 5.5 a été publié et propose un nouveau module de cache de code appelé OPCache, mais il ne semble pas y avoir de documentation à ce sujet.
Où se trouve la documentation et comment utiliser OPcache?
OpCache est compilé par défaut sur PHP 5.5 +. Cependant, il est désactivé par défaut. Pour commencer à utiliser OpCache dans PHP 5.5 +, vous devez d'abord l'activer. Pour ce faire, vous devez procéder comme suit.
Ajoutez la ligne suivante à votre php.ini
:
zend_extension=/full/path/to/opcache.so (nix)
zend_extension=C:\path\to\php_opcache.dll (win)
Notez que lorsque le chemin contient des espaces, vous devez le mettre entre guillemets:
zend_extension="C:\Program Files\PHP5.5\ext\php_opcache.dll"
Notez également que vous devrez utiliser la directive zend_extension
à la place de la directive "normale" extension
car elle affecte le moteur Zend (c'est-à-dire la chose qui exécute PHP).
Il existe actuellement quatre fonctions que vous pouvez utiliser:
opcache_get_configuration()
:Retourne un tableau contenant la configuration actuellement utilisée par OpCache. Cela inclut tous les paramètres ini ainsi que les informations de version et les fichiers en liste noire.
var_dump(opcache_get_configuration());
opcache_get_status()
:Cela renverra un tableau contenant des informations sur l'état actuel du cache. Ces informations comprendront des éléments tels que: l'état du cache (activé, redémarrage, complet, etc.), l'utilisation de la mémoire, les occurrences, les occurrences et certaines informations plus utiles. Il contiendra également les scripts mis en cache.
var_dump(opcache_get_status());
opcache_reset()
:Réinitialise le cache entier. Cela signifie que tous les scripts en cache possibles seront analysés à nouveau lors de la prochaine visite.
opcache_reset();
opcache_invalidate()
:Invalide un script en cache spécifique. Cela signifie que le script sera analysé à nouveau lors de la prochaine visite.
opcache_invalidate('/path/to/script/to/invalidate.php', true);
Certaines interfaces graphiques ont été créées pour aider à maintenir OpCache et à générer des rapports utiles. Ces outils exploitent les fonctions ci-dessus.
OpCacheGUI
Avertissement Je suis l'auteur de ce projet
Fonctionnalités:
Captures d'écran:
URL: https://github.com/PeeHaa/OpCacheGUI
opcache-status
Fonctionnalités:
Capture d'écran:
URL: https://github.com/rlerdorf/opcache-status
opcache-gui
Fonctionnalités:
Capture d'écran:
Comme OPcache est conçu pour remplacer le module APC, il n’est pas possible de les exécuter en parallèle en PHP. Cela convient très bien pour la mise en cache de l'opcode PHP, car cela n'affecte pas la façon dont vous écrivez le code.
Toutefois, cela signifie que si vous utilisez actuellement APC pour stocker d'autres données (via la fonction apc_store()
), vous ne pourrez pas le faire si vous décidez d'utiliser OPCache.
Vous devrez utiliser une autre bibliothèque, telle que APC ou Yac , qui stocke les données dans la mémoire partagée PHP, ou vous permet d'utiliser un autre élément tel que memcached, qui stocke les données en mémoire dans un processus distinct de PHP.
En outre, OPcache n'a pas d'équivalent du compteur de progression du téléchargement présent dans APC. Au lieu de cela, vous devez utiliser le Progression du téléchargement de la session .
La documentation pour OPcache peut être trouvée ici avec toutes les options de configuration répertoriées ici . Les paramètres recommandés sont les suivants:
; Sets how much memory to use
opcache.memory_consumption=128
;Sets how much memory should be used by OPcache for storing internal strings
;(e.g. classnames and the files they are contained in)
opcache.interned_strings_buffer=8
; The maximum number of files OPcache will cache
opcache.max_accelerated_files=4000
;How often (in seconds) to check file timestamps for changes to the shared
;memory storage allocation.
opcache.revalidate_freq=60
;If enabled, a fast shutdown sequence is used for the accelerated code
;The fast shutdown sequence doesn't free each allocated block, but lets
;the Zend Engine Memory Manager do the work.
opcache.fast_shutdown=1
;Enables the OPcache for the CLI version of PHP.
opcache.enable_cli=1
Si vous utilisez une bibliothèque ou un code utilisant des annotations de code, vous devez activer l'enregistrement des commentaires:
opcache.save_comments=1
Si cette option est désactivée, tous les commentaires PHPDoc sont supprimés du code afin de réduire la taille du code optimisé. La désactivation des "commentaires de document" peut endommager certaines applications et certains frameworks existants (par exemple, Doctrine, ZF2, PHPUnit).
Je vais laisser tomber mes deux sous pour ce que j'utilise opcache.
J'ai créé un cadre complet avec beaucoup de champs et méthodes de validation et enums pour pouvoir parler à ma base de données.
sans opcache
Lorsque vous utilisez ce script sans opcache ni requête Push 9000 en 2,8 secondes sur le serveur Apache, le débit maximal est de 90 à 100% de l'unité centrale pendant 70 à 80 secondes, jusqu'à ce qu'il réponde à toutes les demandes.
Total time taken: 76085 milliseconds(76 seconds)
avec opcache activé
Avec opcache activé, il s'exécute à 25-30% du temps CPU pendant environ 25 secondes et ne dépasse jamais 25% d'utilisation.
Total time taken: 26490 milliseconds(26 seconds)
J'ai fait un fichier opcache de liste noire pour désactiver la mise en cache de tout sauf du framework qui est tout statique et n'a pas besoin de changer de fonctionnalité. Je choisis explicitement uniquement les fichiers de structure afin de pouvoir développer sans me soucier de recharger/valider les fichiers de cache. Le fait de tout mettre en cache enregistre une seconde sur le total des demandes 25546 milliseconds
Cela augmente considérablement la quantité de données/demandes que je peux gérer à la seconde sans que le serveur ne craque rien.
Avec PHP 5.6 sur Amazon Linux (devrait être identique sur RedHat ou CentOS):
yum install php56-opcache
puis redémarrez Apache.
Je l'ai rencontré lors de la création de moodle. J'ai ajouté les lignes suivantes dans le fichier php.ini.
zend_extension=C:\xampp\php\ext\php_opcache.dll
[opcache]
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
; Required for Moodle
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0
; If something does not work in Moodle
;opcache.revalidate_path = 1 ; May fix problems with include paths
;opcache.mmap_base = 0x20000000 ; (Windows only) fix OPcache crashes with event id 487
; Experimental for Moodle 2.6 and later
;opcache.fast_shutdown = 1
;opcache.enable_cli = 1 ; Speeds up CLI cron
;opcache.load_comments = 0 ; May lower memory use, might not be compatible with add-ons and other apps
extension=C:\xampp\php\ext\php_intl.dll
[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING