.svn за пределы директории проекта

fixxxer

К.О.
Партнер клуба
ну а чего тут подробнее.

для не шибко больших апдейтов некоторое время держишь и "старую", и "новую" структуры (избыточные поля/избыточные таблицы), как все нормально поднялось (и ты уверен что нормально;) - старье грохаешь.

если выкатывается принципиально новая версия, когда переконвертитьвать надо почти все, то конечно проще на время закрыть. но на практике такие обновления это 1%, а 99% именно небольшие.
 

whirlwind

TDD infected, paranoid
fixxxer ну ты опять намекаешь на хайлоад? Дык не проще вам отдельно фронты апать отдельно базу? По моему для хайлоада тут вообще трудности из другой оперы, не? Какая неконсистентность кода? У вас в хайлоаде картинки скрипты показывают? Да у тебя воркеры так же могут обломать подключенных клиентов при релоаде конфига с новых докрутом. Ты все это проверял и ты уверен в том что говоришь? Для высоконагруженных социальных сетей нет проблемы три секунды пообламывать клиентов. А биллинговые системы обновляются с отключением всех интерфейсов. Там целостность важнее пяти минут простоя.

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

fixxxer

К.О.
Партнер клуба
>> ты опять намекаешь на хайлоад?

Нет. На что угодно, где важно не показывать пользователю ерроров. Хайлоад или нет - не суть.

>>Какая неконсистентность кода?

Когда у тебя уже обновился один файл и еще не обновился другой. Тут что угодно может произойти. А с включенным акселератором - особенно (на продакшене часто отключают проверку mtime ради экономии на вызове stat()); тут смена докрута - самое надежное.

>> Ты все это проверял и ты уверен в том что говоришь?

Плавный рестарт без потери соединений - это та задача, с которой начался php-fpm, например =) В случае с apache - для того же задуман apachectl graceful.

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

Ок, возьмем, например, процессинг. Показать пользователю, покупающему по банковской карте авиабилет, на n-ном шаге ошибку, это разве нормально? По хорошему, нужно graceful-завершение начатых транзакций (новые, допустим, подождут - тут я, в принципе, понимаю случаи, когда на лету получится слишком сложно). И тут тоже намного удобнее все заранее подготовить и просто в нужный момент переключить докрут. Причем даже ничего рестартить не надо - достаточно релоада конфигурации веб-сервера :)

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

whirlwind

TDD infected, paranoid
Ну интерфейсы разные бывают, не только пользовательские, если че ;)
 

fixxxer

К.О.
Партнер клуба
а, ну если аппсервер, то понятно тогда. это вообще несколько другое :)
 

Bakti9rov

!*|=?
fixxxer

вебсервер может быть настроен и не на корень приложения, а в какой-нибудь ./public или ./static. Ну и, .git папку проще и быстрее удалять, чем вычищать все папки с .svn

очень рекомендую capistrano - там есть множество стратегий деплоймента, в т.ч. через subversion (export, copy, remote_cache). Только не знаю, есть ли порт этой тулзы на РНР.
 

fixxxer

К.О.
Партнер клуба
в гите вообще есть git archive, куда уж удобнее для деплоя-то )
 

MiksIr

miksir@home:~$
А чем переключение докрута удобнее переброса симлинка?
 

fixxxer

К.О.
Партнер клуба
Это просто надежнее. Я ловил пару случаев, когда realpath-кэш почему-то не обновлялся, и распарсенный путь к симлинку в realpath-кэше, а соответственно и полный путь с скриптам, оставался равным старому пути - и акселератор продолжал использовать старый байткод. Правда, это было давно, и я даже не вспомню уже, какой это был акселератор и какая версия php, но ситуация "я обновляю - а оно не обновляется!111адинадин" я отлично запомнил :)
 

MiksIr

miksir@home:~$
Кстати.
А с включенным акселератором - особенно (на продакшене часто отключают проверку mtime ради экономии на вызове stat())
А проверяли? Мои замеры с eAccelerator и отключенным mtime дали точно такое же количество stat-ов. Т.е. ощущение, что stat делаются вне акселератора.

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

AmdY

Пью пиво
Команда форума
fixxxer
у меня месяца три назад такая ситуация была с eaccelerator на рабочем девелоперском серваке. пока не переименовал на время файл ничего не помогало, ни перезапуски, ни редактирование
 

MiksIr

miksir@home:~$
Автор оригинала: AmdY
у меня месяца три назад такая ситуация была с eaccelerator на рабочем девелоперском серваке. пока не переименовал на время файл ничего не помогало, ни перезапуски, ни редактирование
Нужно было или через их API чистить или файловый кеш почистить, если он активирован. А лучше ограничить кеш только памятью.
 

AmdY

Пью пиво
Команда форума
MiksIr
я узнал, что накануне установили кешер, уже после того как справился.
 
Сверху