Назад | Перейти на главную страницу

как правильно очистить кеш php apc с помощью capistrano

мы используем capistrano для развертывания нашего PHP-приложения. и php-apc включен на производственном сервере с apc.stat = 0. В конфигурации capistrano есть правило для очистки кеша apc после развертывания: update:

after "deploy:update", "clear_apc_cache"

кеш успешно очищен: apc.php 'View Host Stats' показывает время безотказной работы 0 минут, количество кэшированных файлов и обращений близко к 0 (не 0, потому что существует довольно большой трафик и некоторые файлы кэшируются до того, как мы сможем проверьте apc.php)

проблема в том, что иногда старый файл все еще кэшируется в apc. Я думаю, это связано с тем, что HTTP-запрос начинается до того, как capistrano обновляет «текущую» символическую ссылку и заканчивается после очистки кеша apc. в этом случае файл, включенный после apc clear в этом запросе, все еще находится из старой папки ревизии (мы используем относительный путь в includes и требуютs) и сохраняются в кеше apc

Есть ли способ исправить это навсегда? без обновления все включаютs и требуютс?

на данный момент я попытаюсь отложить "clear_apc_cache" на одну или две секунды, но я боюсь, что это вызовет другие проблемы во время задержки (а некоторые запросы все еще могут быть длиннее 2 секунд)

Этот ответ заявляет, что вам нужно передать аргумент clear_apc_cache и это только с apc.enable_cli=1 будет ли очистка кэша APC работать через вызовы CLI.

Вы можете захотеть clear_apc_cache снова с after:restart крючок, чтобы убедиться, что предыдущий выпуск полностью очищен.