Вручную заполняющую кеш OPCode для всего приложения, используя APC_Compile_File, затем переключение в новый выпуск

StackOverflow https://stackoverflow.com/questions/2834942

Вопрос

У кого-нибудь есть отличная система, или любые идеи, за то, что говорит звание?

Я хочу переключить производственную версию веб-приложения - написано в PHP и обслуживаемый Apache - от Release 1234 для выпуска 1235, но до этого произойдет, у всех файлов уже есть в кеше OPCode (APC). Затем после коммутатора удалите старые записи кэша для файлов из выпуска 1234.

Насколько я могу думать о том, что есть три простых способа атомически переключения с одной версии к следующему.

  1. Имейте символическую ссылку, например / Live, которая всегда является корнем документа, но меняется, чтобы указать из одной версии к другому.
  2. Точно так же есть каталог / live, который всегда является корнем документа, но использовать

    MV Live Oldversion && MV NewVersion Live

    перейти на новую версию.

  3. Отредактируйте конфигурацию Apache, чтобы изменить код документа до revVersion, затем перезапустите Apache.

Я думаю, что предпочтительно не нужно делать 3, но я все равно не могу придумать, чтобы предварительно предложить все PHP-файлы и использовать 1 или 2, чтобы переключить релиз.

Так может кто-то либо убедить меня в порядке, чтобы полагаться на вариант 3 или сказать мне, как работать с 1 или 2, или раскрыть другой вариант, о котором я не думаю?

Это было полезно?

Решение

Именно почему вы хотите сделать это?

Когда я переключаюсь на новый выпуск, я просто остановит свой Apache, замените файлы PHP на сервер через оформление заказа от моих VCS и перезагрузите Apache. В основном это занимает менее 30 секунд, чтобы потянуть это, это даже написано. Все, что выполняется в то время, когда есть несколько пользователей. После этого кэш COPCODE пуст и заполнит себя, как только кто-то использует файлы.

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

Вы даже можете разместить простую «обновление ... вернуться назад» на вашем сервере, заменив файлы, чтобы избежать мешающих сообщений об ошибках ваших пользователей.

Другие советы

Затем после коммутатора удалите старые записи кэша для файлов из выпуска 1234.

Вы можете очистить весь кеш или нет вообще. Это не избирательный процесс. Это может изменить ваш подход к проблеме. Если прекомпиляция имеет первостепенное значение, вы можете быть вынуждены снять сервер во время переключения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top