Текущее приложение, которое я создаю, - это приложение для совместной работы, которое объединяет нескольких пользователей в «команду» или компанию, которые могут получить доступ к ряду проектов. Каждый проект имеет свои собственные документы.
Я хочу защитить пользователей группы от столкновения друг с другом, и поэтому я создал систему, в которой документы блокируются первым пользователем, который получит к ним доступ. Затем документ разблокируется, когда происходит одно из следующих действий:
- Пользователь закрывает документ
- Пользователь выходит из системы и уничтожает его / ее сеанс
- Пользователь ушел без выхода, но сборщик мусора сеанса разблокирует документ
Все это работает хорошо, но одно остается исправить ...
Мне нужно знать, когда пользователь покидает проект, не разблокируя документ (в основном просто покидая страницу), поскольку он может перейти к другому проекту и отредактировать другой документ.
Единственный вариант, о котором я до сих пор думал, - это перехватить ссылку http в моем базовом классе контроллера (CodeIgniter MVC) и выполнить поиск по URL, чтобы определить, соответствует ли он проекту ... Затем разблокируйте документ. *
Хотя это не слишком хороший вариант, поскольку переменная реферера http непредсказуема.
Что бы вы сделали? (Один и тот же пользователь, находящийся в одном и том же документе в двух окнах, является проблемой, которую можно игнорировать)