Я работаю над чем-то похожим на pastebin (да, это , что generic), но допускает многократное редактирование пользователей. Очевидная проблема заключается в том, что несколько пользователей пытаются отредактировать один и тот же файл. Я думаю о том, как блокировать файл, когда один пользователь работает над ним (это не лучшее решение, но мне не нужно что-то слишком сложное), но чтобы предотвратить/предупредить пользователя, мне, очевидно, понадобится система для мониторинга сеансов редактирования каждого пользователя. Работая с базой данных и ajax, я думаю о двух решениях.Мониторинг сеансов пользователей, чтобы предотвратить редактирование конфликтов
Первым будет иметь страницу редактирования ping сервер через произвольный интервал, скажем минута, и он обновит запись сеанса редактирования в db. Затем, в следующий раз, когда запрос на редактирование скрипта проверяется, он проверяет самый последний ping, и если последнее было другим произвольным временем назад, скажем, пять минут, то мы предполагаем, что предыдущий пользователь ушел, и файл можно снова отредактировать. Конечно, проблема с этим методом заключается в том, что предположение, что предыдущий пользователь оставил, является просто предположением. У него может быть развязное соединение wi-fi и просто выпадать на десять минут, все время с открытым окном.
Конечно, иметь дело с этой проблемой, нам нужно было бы, чтобы сервер отвечал на новый запрос из ранее закрытых сеансов с ошибкой, сообщая клиентской стороне указать пользователю, что его сеанс закончился , а затем справиться с этим, скажем, сохранить его как другой файл на сервере и попросить пользователя вручную объединить его и т. д. Разумеется, это довольно ужасно для конечного пользователя.
Итак, я пришел, чтобы подумать о другом решении. Также возможно получить событие unload
, которое должно завершиться после окончания сеанса пользователя, но я не могу быть уверен, будет ли это работать надежно.
Есть ли у кого-нибудь другое, более элегантное решение этой проблемы?
Это отличный ответ, но на самом деле это не то, что я ищу: совместная часть редактирования действительно незначительна для части совместного использования, извините, если я не сделал это ясно. Принятие этого решения сделает вещи даже более сложными - слишком сложными для простого приложения для обмена текстовыми/кодовыми разделами. Количество случаев, которые мне нужно было бы рассмотреть, было бы ... совершенно невозможным с учетом сложности пользовательских взаимодействий. Тем не менее, отличный ответ, и дал мне что-то, чтобы размышлять, пока я жду следующего ответа ... –