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

Кажется, что Apache / PHP кэширует символические ссылки в течение 60 секунд - как это остановить или узнать, что на самом деле кэширует символические ссылки, и остановить это?

У нас есть веб-приложение 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.