Временно отключите кэширование операций
Я недавно перешел на PHP 5.4 и установил OPCache, он очень мощный!
Как я могу временно отключить кэш?
Я пытался:
ini_set('opcache.enable', 0);
Но это не имеет никакого эффекта.
Спасибо
3 answers
Как только ваш скрипт запустится, будет слишком поздно не кэшировать файл. Вам нужно установить его вне PHP:
-
Если PHP работает как модуль Apache, используйте файл
.htaccess
:php_flag opcache.enable Off
-
Если PHP работает как CGI/FastCGI, используйте файл
.user.ini
:opcache.enable=0
И, в любом случае, вы можете использовать старую добрую общесистемную php.ini
, если у вас есть к ней доступ.
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*
не будут кэшироваться.
Надеюсь, это поможет:)
Ваш wordpress functions.php должно выглядеть так при регистрации вашего меню:
function anikwai_theme_setup()
{
register_nav_menus(array(
'primary' => __('Primary Menu')
));
}
add_action('after_setup_theme','anikwai_theme_setup');