За последние 24 часа нас посетили 51923 программиста и 1461 робот. Сейчас ищут 1328 программистов ...

"Просмотр страниц" только для одного

Тема в разделе "Прочие вопросы по PHP", создана пользователем olegkaz, 21 фев 2013.

  1. olegkaz

    olegkaz Активный пользователь

    С нами с:
    21 фев 2013
    Сообщения:
    121
    Симпатии:
    0
    Привет всем, есть одна задача решение которой пока ненайдена.

    Есть таблица с пользователями, и также таблица со списком страниц. Как сделать так, что когда один пользователь смотрит какую-то страницу, то другие не могут её просмотреть. Чтобы при входе в неё вылезало сообщение что: "Данная страница уже просматривается".

    Надеюсь понятно выразил цели задачи.

    Были мысли создать таблицу с входами и когда заходит какой-то пользователь, то ставить в ячейки номер страницы и пользователя, но тогда если пользователь закроет просто страницу, то страница будет также не доступна. Поэтому такой вариант не рабочий.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    например
    у страницы должно быть два свойства - пользователь-монополист и время последнего события.
    пользователь заходит на страницу - проверяем блокировку и выставляем его если ничейная.
    периодически делаем запрос к серваку для обновления последнего события.
    удаляем свои данные при уходе со страницы.
    по расписанию удаляем идентификаторы монополистов которые не совершали действий более скажем 10 минут - таким образом блокировка будет снята даже если юзер просто закрыл вкладку/браузер. не сразу но снята.
     
  3. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    :D, знакомое.)
    Делал для серфинга такое... =)
    Хорошая штуковина.
    Там не все так просто...
    Если не знаешь не сделаешь)))
     
  4. olegkaz

    olegkaz Активный пользователь

    С нами с:
    21 фев 2013
    Сообщения:
    121
    Симпатии:
    0
    Поэтому и обращаюсь за помощью к гуру форума) Просто нужно реализовать в скором времени.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык создай в бд список страниц и пиши рядом номер юзера, который открыл, или 0 если свободно
     
  6. olegkaz

    olegkaz Активный пользователь

    С нами с:
    21 фев 2013
    Сообщения:
    121
    Симпатии:
    0
    Так это понятно, но когда он закрыл браузер прям со страницей которую просматривал, тогда как? Проверять через 10 минут если активность или нет, тоже не выход. Я думал через ajax сделать отправку данных со странице которую он просматривает, а если данные не поступают в течении 1 минуты то сделать её свободной для просмотра. При таком решении получается большая нагрузка, сидят например 1000 пользователей и в секунду вываливает по мимо других запросов, ещё 1000 проверочных.

    Добавлено спустя 52 секунды:
    У Your есть решение, так как он уже делал такю сисетму, но он не хочет делиться своими методами)
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    долбить аяксом из браузера постоянно раз в пять секунд например.

    не должна. у тебя в базе индексы есть? запросы покажи, всё покажи.

    он много говорит =) но наверное есть. это тривиальная задача, она не требует каких-то инженерных изысков.
     
  8. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    добавь еще поле хранения времени открытия. если время истекло, проверить человек еще на странице или нет