Как очистить записи в кэше APC? - PullRequest
170 голосов
/ 26 мая 2009

Мне нужно очистить все записи кэша APC при развертывании новой версии сайта. APC.php имеет кнопку для очистки всех кэшей кода операции, но я не вижу кнопок для очистки всех записей пользователя, или всех системных записей, или всех записей для каждого каталога.

Можно ли очистить все записи кэша через командную строку или каким-либо другим способом?

Ответы [ 18 ]

2 голосов
/ 14 ноября 2013

Стабильный APC имеет возможность очистить кеш в самом интерфейсе. Чтобы очистить эти записи, вы должны войти в интерфейс apc.

APC имеет возможность установить имя пользователя и пароль в файле apc.php.

enter image description here

2 голосов
/ 01 июля 2014

если вы запускаете fpm под Ubuntu, необходимо запустить приведенный ниже код (проверено на 12 и 14)

service php5-fpm reload
1 голос
/ 04 июля 2014

Новый интерфейс администратора APC имеет опции для добавления / очистки кэша пользователя и кэша кода операции. Одна интересная функция - добавлять / обновлять / удалять каталоги из кэша opCode

Документация администратора APC

enter image description here

1 голос
/ 28 января 2014

apc.ini

apc.stat = "1" заставит APC проверять скрипт на каждом запросе, чтобы определить, был ли он изменен. Если он был изменен, он перекомпилирует и кеширует новую версию.

Если этот параметр выключен, APC не будет проверять, что обычно означает, что для принудительной проверки APC файлов веб-сервер должен быть перезапущен или очистить кэш вручную. Обратите внимание, что конфигурации веб-сервера FastCGI могут не очищать кэш при перезапуске. На производственном сервере, где файлы сценариев редко изменяются, при отключенной статистике может быть достигнуто значительное повышение производительности.

0 голосов
/ 07 июня 2017

Мой обходной путь для сборки Symfony с множеством экземпляров на одном сервере:

Шаг 1. Создайте триггер или что-то, чтобы установить флаг файла (например, команда Symfony), затем создайте marker file ..

file_put_contents('clearAPCU','yes sir i can buggy')

Шаг 2. В индексном файле при запуске добавить код очистки и удалить marker file.

if(file_exists('clearAPCU')){
    apcu_clear_cache();
    unlink('clearAPCU');
}

Шаг 2. Запустите приложение.

0 голосов
/ 17 июня 2010

У нас была проблема с APC и символическими ссылками на символические ссылки на файлы - похоже, игнорируются изменения в самих файлах. Каким-то образом выполнение касания самого файла помогло. Я не могу сказать, в чем разница между изменением файла и касанием его, но как-то это было необходимо ...

0 голосов
/ 05 октября 2012

Создать файл APC.php

foreach(array('user','opcode','') as $v ){
    apc_clear_cache($v);
}

Запустите его из браузера.

0 голосов
/ 12 декабря 2012

Хорошим решением для меня было просто больше не использовать устаревший пользовательский кеш после развертывания.

Если вы добавите префикс к каждому из ваших ключей, вы можете изменить префикс при изменении структуры данных записей кэша. Это поможет вам получить следующее поведение при развертывании:

  1. Не использовать устаревшие записи в кэше после развертывания только обновленных структур
  2. Не очищайте весь кеш при развертывании, чтобы не замедлять работу вашей страницы
  3. Некоторые старые кэшированные записи могут быть повторно использованы после отмены развертывания (если записи не были уже автоматически удалены)
  4. APC удалит старые записи в кеше по истечении срока действия ИЛИ при отсутствии места в кеше

Это возможно только для пользовательского кэша.

...