Временно отключите кэширование операций


Я недавно перешел на PHP 5.4 и установил OPCache, он очень мощный!

Как я могу временно отключить кэш?

Я пытался:

 ini_set('opcache.enable', 0);

Но это не имеет никакого эффекта.

Спасибо

 33
Author: Lindsey D, 2014-02-04

3 answers

Как только ваш скрипт запустится, будет слишком поздно не кэшировать файл. Вам нужно установить его вне PHP:

  • Если PHP работает как модуль Apache, используйте файл .htaccess:

    php_flag opcache.enable Off
    
  • Если PHP работает как CGI/FastCGI, используйте файл .user.ini:

    opcache.enable=0
    

И, в любом случае, вы можете использовать старую добрую общесистемную php.ini, если у вас есть к ней доступ.

 65
Author: Álvaro González, 2014-02-04 15:49:30

Opcache.enable - это PHP_INI_ALL, что означает, что ini_set() работает, но только для текущего запроса, чтобы отключить кэширование OPCACHE для остальных сценариев, скомпилированных в вашем текущем запросе. (Вы не можете принудительно включить). Для других запросов он возвращается к системному значению по умолчанию. На этом этапе сценарий запроса уже будет кэширован, если вы не выполните ini_set в сценарии auto_prepend_file.

Системные значения по умолчанию (PHP_INI_SYSTEM) фиксируются как часть запуска системы PHP и не могут быть перечитаны. Поэтому, например, в случае Apache вам необходимо перезапустить Apache, чтобы изменить/перезагрузить их.

В .htaccess php_flag директивы применяются только в том случае, если вы используете mod_php или аналогичный. Они и файлы .user.ini являются файлами PHP_INI_PERDIR, которые также будут заблокированы при активации запроса.

Теперь перейдем к вопросу, который, я думаю, вы могли бы задать. Если у вас есть система разработки, то самый простой способ - установить opcache.enable=0 в соответствующем INI-файле и перезапустите свой веб-сервер. Установите его обратно на =1 и перезапустите снова, когда закончите.

Также рассмотрите (в контексте разработки) настройки opcache.validate_timestamps=on и opcache.revalidate_freq=0. Это сохранит OPcache включенным, но сценарии будут регистрироваться при каждом запросе на компиляцию, чтобы узнать, были ли они изменены. Это дает лучшее из обоих миров при разработке.

Также ознакомьтесь с директивой opcache.blacklist_filename. Это позволяет указать файл исключения, поэтому, если он содержит /var/www/test, и веб- корневой каталог службы /var/www, то любые сценарии в иерархиях /var/www/test* не будут кэшироваться.

Надеюсь, это поможет:)

 20
Author: TerryE, 2016-05-24 19:27:58

Ваш wordpress functions.php должно выглядеть так при регистрации вашего меню:

function anikwai_theme_setup()
{

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


}

add_action('after_setup_theme','anikwai_theme_setup');
 -1
Author: Watson Cyrus Anikwai, 2018-09-10 19:35:12