16
0
Fork 0

Amélioration section OpCache

master
whirigoyen 3 months ago
parent de4e62c662
commit 02603bda1c
  1. 38
      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
~~~
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 :
Pour surveiller OpCache, on peut utiliser :
* <https://github.com/amnuts/opcache-gui>
* Plugin Munin <https://github.com/munin-monitoring/contrib/blob/master/plugins/php/php_opcache> + <https://github.com/munin-monitoring/contrib/blob/master/plugins/php/php_opcache.php>
* Plugins Munin : <https://github.com/munin-monitoring/contrib/blob/master/plugins/php/php_opcache> + <https://github.com/munin-monitoring/contrib/blob/master/plugins/php/php_opcache.php>
**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.
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
~~~
**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.
**Attention :** Si l'on oublie l'option `--cli`, on rencontrera l'erreur suivante : `Error: Access denied`.
## HHVM

Loading…
Cancel
Save