Zend OpCache cache et optimise l’opcode (version pré-compilée d’un script) afin de fournir une exécution plus rapide des scripts PHP. Il améliore les performances de PHP car ce dernier n’a plus besoin de charger, d’analyser et de pré-compiler les scripts.
En fonction de la version de PHP sa mise en place est différente.
Php 5.5 et +
PHP 5.5 intégre déjà ZendOpCache, mais ce dernier n’est pas activé. Il faut donc dé-commenter la ligne suivant dans votre /etc/php5/apache2/php.ini et changer sa valeur à 1 .
opcache.enable=1
Php 5.4
Cette extension PECL n’est pas intégrée à PHP, il vous faut suivre les étapes ci dessous pour l’installer.
L’installation a été faite pour ma part sur une debian wheezy.
Installation
Pour commencer regarder quelle est la dernier version stable à installer ici. Actuellement il s’agit de la 7.0.5
# Install "pecl" via php-pear $ sudo apt-get install -y php-pear # Install build dependencies $ sudo apt-get install -y build-essential php5-dev # Install Zend OpCache $ sudo pecl install zendopcache-7.0.5
Configuration
Une fois l’installation finie, les dernières lignes affichées vous permettent de localiser le fichier opcache.so
Build process completed successfully Installing '/usr/lib/php5/20100525/opcache.so' install ok: channel://pecl.php.net/zendopcache-7.0.5 configuration option "php_ini" is not set to php.ini location You should add "zend_extension=/usr/lib/php5/20100525/opcache.so" to php.ini
sinon vous pouvez toujours le chercher :
sudo find / -name 'opcache.so' /usr/lib/php5/20100525/opcache.so
La convention d’installation d’un module php, indique qu’il faut mettre tous les fichiers dans /etc/php5/conf.d qui sont des liens symboliques de /etc/php5/mods-available
Pour ma part, je préfère créer directement le fichier dans /etc/php5/conf.d sans m’incommoder de liens symboliques.
Vous devez donc créer le fichier opcache.ini (à l’emplacement de votre choix) et y insérer le lien vers le fichier opcache.so ainsi que la configuration suivante généralement recommandée, vu qu’elle fournit un bon gain en terme de performance :
zend_extension=/usr/lib/php5/20100525/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
Si vous avez créée votre fichier dans /etc/php5/mods-available n’oubliez pas le lien symbolique.
sudo ln -s /etc/php5/mods-available/opcache.ini 20-opcache.ini
Redémarrer Apache
sudo service apache2 restart
Redémarrer Nginx
sudo service php5-fpm restart sudo service nginx restart
Confirmation d’installation
Afin de confirmer la réussite de l’installation, lancer php -v pour obtenir des informations concernant Zend OpCache.
php -v PHP 5.4.45-0+deb7u2 (cli) (built: Oct 17 2015 08:26:31) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies
Cleanup
En production il est conseillé de ne pas conserver les packages précédemment installés
sudo apt-get remove --purge build-essential php5-dev
Performances
Sur mon wordpress je suis passé d’un temps de chargement des pages de 1,50sec à 742ms, sans utiliser d’extension de cache.