Страница блокировки PHP / MySQL и сбой клиента

У меня есть простой сайт PHP / MySQL. Внутри есть одна страница, к которой должен обращаться только один пользователь:

  • Если один пользователь заходит на эту страницу, а на ней больше никого нет, страница отображается;
  • Если один пользователь заходит на эту страницу, а кто-то уже видит ее, страница считается заблокированной, и пользователь перенаправляется на другую страницу.

Чтобы отслеживать, кто посещает эту страницу или нет, у меня есть таблица MYSQL со следующей структурой:

________________________________________
| ID | ID_User | Visit_TS              |
|____|_________|_______________________|
| 1  |    20   | 2015-01-12 10:00:01   |
|____|_________|_______________________|

В этом случае страница в настоящее время посещается с идентификатором пользователя 20. Если любой другой пользователь пытается посетить ее, он не может этого сделать, поскольку пользователь 20 блокирует ее.

Если пользователь (с ID 20)

  • Посещает другую страницу или
  • Закрывает браузер (ajax при выгрузке окна)

Затем таблица сбрасывается.

Тем не мение, если клиентский компьютер пользователя дает сбой, или если они делают грубое отключение, блокировка никогда не снимается (в этом случае пользователь не посещал другую страницу, и окно не выгружалось …)

В этом случае у меня тупик.

Теоретически, мы должны подождать, пока пользователь не вернется в онлайн и не посетит другую страницу или не закроет браузер — но это не способ решить проблему.

Как я могу решить эту проблему?

Должен ли я создать автоматический скрипт PHP, который периодически сбрасывает таблицу?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …