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