У нас есть веб-приложение PHP, которое мы развертываем на сервере LAMP под управлением CentOS 5.5 с использованием Capistrano. Capistrano управляет переключением на последнюю версию (и откатом) с помощью символической ссылки, поэтому наш корень документа должен указывать на эту символическую ссылку.
К сожалению, мы наблюдаем, что веб-запросы к приложению PHP все еще указывают на предыдущую цель символической ссылки корневого документа в течение ровно 60 секунд после обновления символической ссылки.
Единственный параметр в конфигурации PHP, который я смог найти, который может относиться к этому, - это realpath_cache_ttl
настройка, однако она установлена на 120 секунд. Я ничего не нашел в конфигурации apache.
Мы не используем APC.
Я вообще ищу в нужном месте?
Символьные ссылки кешируются Apache, я предполагаю, что вы используете FollowSymLinks в своем httpd.conf. Вы можете попробовать использовать SymLinksIfOwnerMatch, чей вызов lstat не кэшируется http://httpd.apache.org/docs/2.0/misc/perf-tuning.html#symlinks
apache не кеширует символические ссылки, но он немного кеширует расположение файлов, и если вы используете APC, он действительно будет кешировать. Я тоже это видел, но использовал ткань для развертывания. Работа заключалась в перезапуске / перезагрузке / изящном apache после изменения символической ссылки.
сначала попробуйте изящный, затем перезагрузите, а затем перезапустите, если все остальное не удается
Apache не кэширует символические ссылки (было бы невероятно глупо пытаться; кеш файловой системы знает намного больше о том, что происходит, и будет очень быстро). мне бы strace
вся она, чтобы лучше понять, что и когда делает.
В моем случае это был не сам Apache. Пришлось перезапустить php-fpm.