clearstatcache + include_path + сессии - PullRequest
6 голосов
/ 12 февраля 2012

У меня возникла проблема, когда мы запускаем обновление для нашего веб-приложения.

После того, как скрипт обновления завершит работу и получит доступ к веб-приложению через браузер, мы получим ошибки об отсутствии файлов в require_once (), потому что мы переместили некоторые файлы, а в PHP все еще сохраняется старая структура каталогов.

Если у нас есть 120 секунд по умолчанию для истечения срока действия realpath_cache_ttl, тогда все разрешается само по себе, но это не приемлемо по очевидным причинам.

Поэтому я попытался использовать clearstatcache с ограниченным успехом. Я создал отдельный файл (clearstatcache.php), который вызывает только эту функцию (это файл из одной строки), и поместил вызов в наш скрипт установки с помощью curl:

<?php
clearstatcache(true);

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

Я использую PHP версии 5.3

Я начал изучать различия заголовка запроса между моим браузером и curl, и единственное, что я могу видеть, это может иметь значение, это файл cookie PHPSESSID.

Итак, мой вопрос, имеет ли значение текущий PHPSESSID (я не думаю, что это должно). Я делаю что-то не так с моим скриптом? Я использую

curl -L http://localhost/clearstatcache.php

РЕДАКТИРОВАТЬ: После дальнейших исследований я решил, что это, вероятно, связано с несколькими запущенными процессами Apache. clearstatcache очищает только кэш текущего процесса apache - когда браузер делает запрос, другой запрос apache обрабатывает запрос, и этот процесс все еще имеет старый кэш.

1 Ответ

2 голосов
/ 15 февраля 2012

Учитывая, что кэш является частью дочернего процесса Apache благодаря mod_php, ваше решение, вероятно, будет перезапускать сервер Apache.

Если вы использовали FastCGI (под Apache или другим веб-сервером)Решением, вероятно, будет перезапуск любого используемого вами менеджера процессов.

Этот шаг, вероятно, должен стать частью вашего стандартного плана развертывания.Имейте в виду, что могут быть другие кэши, которые вам также может понадобиться очистить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...