Я поддерживаю большой сайт WordPress и пытаюсь устранить проблему, не связанную с ней, добавив в код операторы трассировки, которые являются не чем иным, как вызовом error_log (). Вкратце, мой сервер настроен как файловый сервер, который разделяет корень документа сайта через nfs. Есть 2 веб-сервера, на которых работает nginx + apc + php / fpm. Я редактирую файлы php непосредственно на файловом сервере, и когда я просматриваю файлы с веб-серверов, я вижу свои изменения, однако, когда я отслеживаю журнал ошибок, я вижу, что мои изменения не отражаются немедленно. Я продолжаю видеть старые операторы трассировки, как будто я вообще не вносил изменения.
Моя теория запуска заключается в том, что код кэшируется либо в apc (duh), либо в кеше nfs на стороне клиента (маловероятно, поскольку я вижу изменения с помощью vi). Я пытаюсь смягчить это, сбрасывая кэш apc, используя скрипт, который запускает apc_clear_cache (). Кроме того, я перезапустил nginx, а также php-fpm, надеясь, что что-то очистит старый кешированный php-код. Ни один из этих методов не сработал, и я должен подождать до часа или более, прежде чем я увижу изменения в моем коде, отраженные в журналах.
Сайт, на котором я устраняю неполадки, имеет довольно высокий трафик, поэтому перемонтирование общего ресурса nfs для меня не вариант. Я предполагаю, что кэш кода операции apc на самом деле не очищается, но я смотрел статистику с помощью apc.php, и я вижу, как выглядит кэш, перестраиваемый после того, как я запустил свой скрипт сброса. Я занимался этим пару дней, и устранение неполадок в простой проблеме превратилось в огромную головную боль. Может ли кто-нибудь предложить какие-то идеи, на которые стоит обратить внимание или попытаться сделать изменения в моем коде более быстрыми?