diff --git a/HowtoPHP.md b/HowtoPHP.md index b824f773..f039068a 100644 --- a/HowtoPHP.md +++ b/HowtoPHP.md @@ -727,33 +727,47 @@ Symfony form ~164ms ### OpCache -~~~ -# apt install php7.0-opcache -~~~ - OpCache est un module PHP qui réduit le temps d'exécution du code PHP. Il pré-compile le code PHP en byte-code et le stocke en cache. - Il remplace les « accélérateurs » comme APC, eAccelerator, etc. utilisés dans les versions précédentes de PHP. -Il est configurable via `/etc/php5/mods-available/opcache.ini`. La valeur de cache par défaut est de `64M` (paramètre `opcache.memory_consumption`). +~~~ +# apt install phpX.X-opcache +~~~ -Pour surveiller OpCache on peut utiliser : +La configuration se fait dans `/etc/php5/mods-available/opcache.ini`. +La valeur de cache par défaut est de `64M` (paramètre `opcache.memory_consumption`). + +Pour surveiller OpCache, on peut utiliser : * -* Plugin Munin + +* Plugins Munin : + -**Attention :** OpCache ne détecte pas les changements dans le code PHP lorsque les déploiements sont fait avec des liens symboliques). +#### Reset du cache d'OpCache -Avec **Nginx**, la solution est de changer les paramètres FastCGI suivants dans le vhost. Dans le bloc où l'on indique le chemin du socket PHP, il faut ajouter après la dernière directive : +OpCache ne détecte pas les changements dans le code PHP lorsque les déploiements sont fait avec des liens symboliques. Il existe une solution « automatique » seulement pour Nginx : + +Dans le vhost, dans le bloc indiquant le chemin du socket PHP, ajouter après la dernière directive : ~~~ fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; ~~~ -Ces paramètres doivent être indiqués après les inclusions (par exemple `include snippets/fastcgi-php.conf;`), car sinon les paramètres contenus dans la configuration inclue risqueraient d'écraser ceux que l'on vient d'ajouter. +**Attention :** Ces paramètres doivent être ajoutés après les inclusions (par exemple `include snippets/fastcgi-php.conf;`), car sinon les paramètres contenus dans la configuration inclue risqueraient d'écraser ceux que l'on vient d'ajouter. -**Apache** ne propose pas de solution similaire. Pour rafraichir le cache, il faut alors soit exécuter la fonction PHP opcache_reset(), soit reloader le service PHP-FPM après le déploiement. +Les autres possibilités, notamment dans le cas Apache, sont de reset le cache à la main. + +On peut : + +* Appeler la fonction PHP opcache_reset() (solution applicative) +* Redémarrer le service PHP-FPM (solution radicale). +* Utiliser CacheTool (solution CLI) : + +~~~ +php bin/cachetool.phar --fcgi=php-fpm73.sock opcache:reset --cli +~~~ + +**Attention :** Si l'on oublie l'option `--cli`, on rencontrera l'erreur suivante : `Error: Access denied`. ## HHVM