Методика обновления кода (php, mysql) на сервеве.

AndreyK

Новичок
Методика обновления кода (php, mysql) на сервеве.

В компании имеется небольшой личный кабинет для менеджеров (php+mysql). Периодически что-то дорабатывается и он обновляется.
Вопрос: как правильно обновлять на сервере базу и php-файлы.

По методике обновления:
- заменить временно страницу входа на «Выполняются профилактические работы», чтобы никто не мог войти до окончания обновления.
- основной вопрос – как именно проверить/получить гарантию того, то никто из пользователей сейчас не работает в личном кабинете?
 

prolis

Новичок
написать сообщение, что в 20:00 будет происходить обновление ПО. Всем выйти.
И обновить
Ну и в .htaccess можно наподкосячить для верности
 

Wicked

Новичок
- заменить временно страницу входа на «Выполняются профилактические работы»
запретить доступ ко всем страницам.

например, в симфони это делается так:
You can temporarily disable your application--for instance, when you need to upgrade a library or a large amount of data.

> symfony disable APPLICATION_NAME ENVIRONMENT_NAME

By default, a disabled application displays the default/unavailable action (stored in the framework), but you can customize the module and action to be used in this case in the settings.yml file.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Я ленивый. Первой строчкой стоит <? #include('index-suspended.html');die;

Стыдно наверно должно быть )

-~{}~ 24.06.09 18:33:

ЗЫ. Все урлы зарулены на index.php модреврайтом, ага.
 

zerkms

TDD infected
Команда форума
почему бы не заруливать тогда сразу на статичную хтмлину? :)
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Ленивый же :)
Вообще, потому что планировал сделать index-suspended.php, который будет слать цивыльный 503 Service Unavailable, что бы не портить гуглоботам и себе жизнь.
 

AndreyK

Новичок
Спасибо за ответы. Как запретить вход в "Личный кабинет" - понятно. А вот как именно проверить то, что никто из пользователей сейчас не работает в личном кабинете? Т.е. я запрещаю подключение новых, но сейчас кто-то может работать и я тут начинаю обновлять базу - последствия непредсказуемые. Как вариант - временно запретить подключение подключение к базе данных.
 

dimagolov

Новичок
А вот как именно проверить то, что никто из пользователей сейчас не работает в личном кабинете?
Видимо, надо где-то хранить статус "присутствия". С другой стороны так как типичное "присутствие" на странице это обновление в течении жизни сессии, то очевидно, что запрещать вход надо заранее.
 

baev

‹°°¬•
Команда форума
но сейчас кто-то может работать и я тут начинаю обновлять базу
— если перед обновлением отрубить доступ к базе остальным пользователям, то ничего страшного не случится.
 

zerkms

TDD infected
Команда форума
baev
исключая то, что пользователи могли сидеть спокойно и набирать многомегабайтный пост, после отправки которого они увидят это миленькое сообщение :)
 

tf

крылья рулят
В компании имеется небольшой личный кабинет для менеджеров (php+mysql). Периодически что-то дорабатывается и он обновляется.
зарулить систему обдейтов
в админке ставить статутс обновление системы
в личном кабинете проверять статус и блокировать пользователям доступ к сервисам
если идут данные на post или на крайняк по гет сохранять их в логе
после разблокировки проверять был ли бекап данных пользователя и предлогать им их восстановить
запросить увелечение бюджета под это дело
 

zerkms

TDD infected
Команда форума
зарулить систему обдейтов
в админке ставить статутс обновление системы
в личном кабинете проверять статус и блокировать пользователям доступ к сервисам
если идут данные на post или на крайняк по гет сохранять их в логе
после разблокировки проверять был ли бекап данных пользователя и предлогать им их восстановить
запросить увелечение бюджета под это дело
феерично :)
 

korchasa

LIMB infected
А зачем блокировать пользователей? Обновление занимает так много времени?
 

zerkms

TDD infected
Команда форума
korchasa
ну вообще ничего страшного в блокировке ведь нет - сколько бы ни было посетителей.
если мало - то никто не увидит это сообщение, которое будет болтаться 3 секунды.
если много - то лучше пусть увидят сообщение, чем тонну ошибок или что-то поломают на полуобновлённом проекте.

ps: ну и не стоит забывать - что после обновления можно пощёлкать пару минут - проверить что всё хорошо.
 

korchasa

LIMB infected
Автор оригинала: zerkms
korchasa
ну вообще ничего страшного в блокировке ведь нет - сколько бы ни было посетителей.
если мало - то никто не увидит это сообщение, которое будет болтаться 3 секунды.
если много - то лучше пусть увидят сообщение, чем тонну ошибок или что-то поломают на полуобновлённом проекте.

ps: ну и не стоит забывать - что после обновления можно пощёлкать пару минут - проверить что всё хорошо.
Да ну ничего страшного, просто на нашей практике это оказалось не так уж нужно. Если только меняется схема данных на большом объеме. А щелкать надо на stage-сервере, а не на продакшене, а то offline длиннее будет ;)

*ушел, на всякий случай, делать консольник для переключения мужду конфигами nginx'а*
 

baev

‹°°¬•
Команда форума
исключая то, что пользователи могли сидеть спокойно и набирать многомегабайтный пост,
— по этому поводу уже предложили: заранее предупреждать о планируемых работах.
Так что, если объявлению не внял — сам себе злобный буратино.
 

Splurov

Новичок
Можно перед отправкой любой формы делать аякс-запрос на сервер с проверкой на "включенность" сайта. Если происходит обновление ПО - выводить оверлей на всю страницу с сообщением вроде "ведутся работы, работоспособность сайта будет восстановлена в течении 10 минут". Ежеминутно проверять аяксом на доступность сайта и скрывать оверлей. Пользователь информирован и не теряет данные.
 

Splurov

Новичок
tf с чего это вдруг сервер упадёт от одного простого запроса?
 
Сверху