Привет всем, есть одна задача решение которой пока ненайдена. Есть таблица с пользователями, и также таблица со списком страниц. Как сделать так, что когда один пользователь смотрит какую-то страницу, то другие не могут её просмотреть. Чтобы при входе в неё вылезало сообщение что: "Данная страница уже просматривается". Надеюсь понятно выразил цели задачи. Были мысли создать таблицу с входами и когда заходит какой-то пользователь, то ставить в ячейки номер страницы и пользователя, но тогда если пользователь закроет просто страницу, то страница будет также не доступна. Поэтому такой вариант не рабочий.
например у страницы должно быть два свойства - пользователь-монополист и время последнего события. пользователь заходит на страницу - проверяем блокировку и выставляем его если ничейная. периодически делаем запрос к серваку для обновления последнего события. удаляем свои данные при уходе со страницы. по расписанию удаляем идентификаторы монополистов которые не совершали действий более скажем 10 минут - таким образом блокировка будет снята даже если юзер просто закрыл вкладку/браузер. не сразу но снята.
, знакомое.) Делал для серфинга такое... =) Хорошая штуковина. Там не все так просто... Если не знаешь не сделаешь)))
Так это понятно, но когда он закрыл браузер прям со страницей которую просматривал, тогда как? Проверять через 10 минут если активность или нет, тоже не выход. Я думал через ajax сделать отправку данных со странице которую он просматривает, а если данные не поступают в течении 1 минуты то сделать её свободной для просмотра. При таком решении получается большая нагрузка, сидят например 1000 пользователей и в секунду вываливает по мимо других запросов, ещё 1000 проверочных. Добавлено спустя 52 секунды: У Your есть решение, так как он уже делал такю сисетму, но он не хочет делиться своими методами)
долбить аяксом из браузера постоянно раз в пять секунд например. не должна. у тебя в базе индексы есть? запросы покажи, всё покажи. он много говорит =) но наверное есть. это тривиальная задача, она не требует каких-то инженерных изысков.
добавь еще поле хранения времени открытия. если время истекло, проверить человек еще на странице или нет