@gibigate

Список открытых данных из базы данных

Здравствуйте, появилось необходимость в следующем:

У нас есть несколько редакторов, и есть свой движок для редактирования ячеек из базы данных, все написано на пхп+mysql, возникает перезапись когда редакторы получают одни и те же данные из базы данных (обновляют страницу), соответственно, нужно придумать какой нибудь фикс, чтобы ID полученных данных у одного редактора не повторялась у другого.

* редакторов может быть много.

Как лучше выполнить эту задачу?
  • Вопрос задан
  • 2582 просмотра
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
Если задача "не открыть второму" - то при открытии писать в табличку что открыто, кем и когда. периодически обновлять, при закрытии - удалять из этой таблички. Или протухании времени, допустим, обновлять раз в 10 секунд, при протухании больше минуты - форсированно удалять (вариант потери связи).

Если задача "не сохранить второму" - то завести поле "версия", перед записью вносить изменения через сравнение ид и версии, типа update ... set version = version+1 ... where id = 1 and version = 1. если 0 строк обновлено - то кто-то до нас туда записал что-то. также можно периодически проверять на изменение версии и сигнализировать об этом "второму" редактору.

Также возможна любая комбинация этих методов и некоторые другие, которые сводятся к этим двум и их комбинации.
Ответ написан
@lizergil
Привет, это классический случай параллельного доступа к данным. Вариантов решения масса. Один из самых простых и надежных: использовать локи (lock) таблиц, строк, ячеек в БД. Вот в PostgreSQL, например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы