Desactivar OPcache temporalmente


Recientemente me mudé a PHP 5.4 e instalé OPcache, ¡es muy poderoso!

¿Cómo puedo desactivar temporalmente la caché?

Lo intenté:

 ini_set('opcache.enable', 0);

Pero no tiene efecto.

Gracias

 33
Author: Lindsey D, 2014-02-04

3 answers

Una vez que se ejecuta el script, es demasiado tarde para no almacenar en caché el archivo. Necesita configurarlo fuera de PHP:

  • Si PHP se ejecuta como módulo Apache, use un archivo .htaccess:

    php_flag opcache.enable Off
    
  • Si PHP se ejecuta como CGI / FastCGI, use un archivo .user.ini:

    opcache.enable=0
    

Y, en cualquier caso, puedes usar el viejo y bueno php.ini para todo el sistema si tienes acceso a él.

 65
Author: Álvaro González,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-04 15:49:30

Opcache.enable es PHP_INI_ALLlo que significa que ini_set() funciona, pero solo para la solicitud actual para deshabilitar el almacenamiento en caché de OPcache para el resto de scripts compilados en su solicitud actual. (No se puede forzar la habilitación). Vuelve al valor predeterminado del sistema para otras solicitudes. En esta etapa, el script de solicitud ya se habrá almacenado en caché, a menos que haga el ini_set en un script auto_prepend_file.

Los valores predeterminados del sistema (PHP_INI_SYSTEM) se bloquean como parte del inicio del sistema PHP y no se pueden volver a leer. Así que en el caso de Apache, por ejemplo, necesita reiniciar Apache para cambiar / recargar estos.

El .htaccess php_flag las directivas solo se aplican si está ejecutando mod_php o equivalente. Estos archivos y .user.ini son PHP_INI_PERDIR, que también se bloquearán cuando se active la solicitud.

Ahora a la Pregunta que creo que podrías estar preguntando. Si usted tiene un sistema dev entonces la forma más fácil es establecer opcache.enable=0 en el archivo INI apropiado y reinicie su servidor web. Vuelva a configurarlo en =1 y reinicie de nuevo cuando haya terminado.

También considere (en el contexto de desarrollo) la configuración opcache.validate_timestamps=on y opcache.revalidate_freq=0. Esto mantendrá OPcache habilitado, pero los scripts se actualizarán en cada solicitud de compilación para ver si se cambian. Esto da lo mejor de ambos mundos cuando se desarrolla.

También lea la directiva opcache.blacklist_filename. Esto le permite especificar un archivo de exclusión, por lo que si este contiene /var/www/test, y la web service docroot es /var/www entonces cualquier script en las jerarquías /var/www/test* no se almacenará en caché.

Espero que esto ayude:)

 20
Author: TerryE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-24 19:27:58

Sus funciones de wordpress.php debería tener este aspecto al registrar su menú:

function anikwai_theme_setup()
{

    register_nav_menus(array(
        'primary' => __('Primary Menu')
    ));


}

add_action('after_setup_theme','anikwai_theme_setup');
 -1
Author: Watson Cyrus Anikwai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-10 19:35:12