Заполнение кэша кода операции для всего приложения вручную с помощью apc_compile_file, а затем переключение на новый выпуск - PullRequest
0 голосов
/ 14 мая 2010

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

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

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

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

    Mv Live Oldversion && Mv Newversion Live

    для перехода на новую версию.

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

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

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

Ответы [ 2 ]

1 голос
/ 14 мая 2010

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

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

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

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

1 голос
/ 14 мая 2010

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

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

...