LINUX.ORG.RU

Редактирование записи несколькими пользователями


0

0

Всем привет.

Пишу для себя скромный клон whiteboard приложения (пример — writeboard от 37signals). Если кратко, то его суть в том, чтобы дать нескольким пользователям читать запись (текст) и редактировать его. Так же они могут посмотреть изменения и версии записи.

Задумался, как лучше сделать сообщение о том, что запись уже редактируется (чтобы избежать потери правки от другого пользователя). Можно создавать временный файл или пометку в бд, но если пользователь открыл для редактирования запись а потом просто закрыл страницу, то пометка останется и это плохо.

Существует ли какой-нибудь способ сделать по-другому? Php, сокеты не предлагать. Я конечно подозреваю, что нет... но мало ли.

>Php, сокеты не предлагать. Я конечно подозреваю, что нет... но мало ли.

Читать как: использую php, но важно обойтись без сокетов :)

portalgun
() автор топика

А может проще взять готовую систему контроля версий, а свое приложение написать как веб-морду к ней?

painEffect
()

Пользователь жмет сохранить, система ему говорит что мол такая фигня, тут уже напортачили, и предлагает несколько вариантов:
-записать его вариант
-ничего не записывать
-попытаться объединить изменения автоматом
есесно история версия обязана быть

wfrr ★★☆
()
Ответ на: комментарий от wfrr

>Пользователь жмет сохранить, система ему говорит что мол такая фигня, тут уже напортачили, и предлагает несколько вариантов

Это вроде очевидно. Просто проблема в том, что если каждый раз из за некорректного завершения работы со скриптом у всех остальных будет сообщение «Мы не знаем, правит кто-нибудь запись или нет, спроси у него сам», то во-первых это глуповато выглядит, а во-вторых рано или поздно на это начнут забивать.

portalgun
() автор топика
Ответ на: комментарий от tomodachi_ni_narimashou

>А во-пще то ты щас хернею паришься а ты не парься а почитай про realtime collaborative editors та operational transformation

Я знаю, что это такое, но увы это не совсем то, что мне нужно.

portalgun
() автор топика
Ответ на: комментарий от portalgun

Посылай каждые 30 сек в процессе редактирования пинг-пакеты AJAX-ом и заноси время прихода пакета в данные блокировки.

При редактировании другим пользователем проверяй, чтобы данные блокировки были обновлены позднее чем минуту назад.

future-of-the-lor
()
Ответ на: комментарий от portalgun

Ещё вариант — как на phpBB. В форме редактирования скрытым полем передавай время создания формы. При сохранении проверяй, если документ был обновлен позднее чем то время. Если это так, то пиши что ему надо вручную слить правки. Можно и diff прикрутить какой-нибудь простой.

future-of-the-lor
()

Блокировки - это очень-очень уныло, и единственный унылый тролль или просто глючный клиент легко заблочит всё твоё приложение. Смотри как в MediaWiki сделано.

INFOMAN ★★★★★
()
Ответ на: комментарий от INFOMAN

Посмотрел на медиавики... спасибо всем кто дал наводку на неё. Просто и уверенно выглядит на фоне всех остальных вариантов. Приятно удивлен, честно говоря. Вот только код немного ужасненький, ну да ладно, разберемся:)

portalgun
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.