Revalidar opcache solo después de empujar git

Estoy usando PHP con OPcache. Solo git-push para dominar para implementar mi website en producción (no en realidad, es solo después de las testings unitarias, pero no importa). En el file php.ini , las configuraciones de OPcache son sobre "time" y "frecuencia". Pero solo quiero restablecer el caching después de que git pull en mi server.

Así que creo que solo necesito llamar a opcache_reset después de git-pull en mi server de producción y establecer opcache.validate_timestamps en 0 (nunca restablecer el caching)

No leí nada sobre eso, así que dudo: no sé si es una buena práctica. ¿Me he perdido algo? ¿Hay algún riesgo o está bien?

¡Muchas gracias!

PD: estoy usando un framework y compositor de PHP (la composer install está ejecutando justo después de git-pull)

Para get el mayor beneficio de OPCache, debe desactivar opcache.validate_timestamps . Si posteriormente llama a opcache_reset() desde un script cada vez que implementa su código en el server, entonces su OPCache se borrará una vez para cada nuevo set de files, y el sistema no desperdiciará resources revisando constantemente los files.

Sin embargo, hay un par de "trampas":

Antes que nada, asegúrate de que la llamada a opcache_reset() ocurra, o de lo contrario estarás ejecutando el código anterior. Si tiene un script para ejecutar su implementación, asegúrese de que falle ruidosamente si este paso no se ejecuta.

En segundo lugar, dependiendo de cómo se ejecuta exactamente PHP (mod_php vs php-fpm), puede necesitar ejecutar la function opcache_reset() través de una request al browser, no a través de la línea de command. Por ejemplo, la solución más obvia para borrar el caching es tener un file PHP simple como el siguiente

 <?php if (php_sapi() != "cli") die("Not accessible from web"); opcache_clear(); 

y ejecuta ese file en cada extracción de código. Dependiendo de la versión de PHP y de cómo se ejecute, es posible que solo borre la caching de la command-line y no la versión web en ejecución.

Si borrar de la línea de command no funciona, considere crear un script similar y llamarlo a través de la web utilizando curl o wget . Por ejemplo, curl http://example.com/clear_cache.php?secret=abc123 . Si crea la secuencia de commands para que sea accesible desde la web, asegúrese de que compruebe una key secreta para evitar que alguien cargue su server borrando constantemente su caching.

Finalmente, como otros han sugerido, para hacer que sus comstackciones sean totalmente repetibles entre las testings y la implementación, considere tener al final del process de testing la creación de un file .zip de todo el código utilizado para las testings, incluidas las bibliotecas desplegadas por el compositor. En lugar de git pull a git pull tu server, simplemente descomprime el file sobre el código raíz. Me doy count de que la git pull && composer update es fácil. Sin embargo, como otros han sugerido, si una biblioteca se actualiza entre las testings de time que se ejecutaron y el momento de la implementación, es posible que su código ya no funcione como se esperaba.