2013-02-28 2 views
0

Я нахожу несколько частичных решений в ответах на этот вопрос, но общий ответ кажется отсутствующим. Итак, у меня есть таблица пользователей с столбцами user_id, user_name. На каждой статической странице веб-сайта я хочу отобразить все имена пользователей, которые сейчас просматривают эту страницу.выберите пользователей, которые в данный момент просматривают ту же страницу

  1. Должен ли я иметь представление таблицы с колонками user_id, webpage_link?
  2. Если да, то когда я буду обновлять данные в столбце webpage_link? Как подключить код из следующего ответа с базой данных mysql Is there a way to detect if a browser window is not currently active?? (Если это подходит для этой цели.)
  3. Для внесения обновлений очень часто не очень хорошо. Таким образом, пользователь может просматривать несколько страниц (например, в двух или более вкладках). Какой тип столбца webpage_link должен быть в этом случае?

ответ

0
  1. С каждого запроса HTTP, вы получите переменную $ PATH. если у вас также есть зарегистрированный пользователь, вы можете сохранить ту страницу, которую этот пользователь запросил последним (например, в таблице, как вы описали, но сохраняете только относительный путь).

  2. Вы обновляете эту информацию по отдельному запросу в каком-то фронт-контроллере. (просто убедитесь, что вы положили его там, где он вызывается для каждой аутентифицированной страницы). Когда сеанс пользователя заканчивается, вы удаляете строку этого пользователя из таблицы.

  3. этот случай немного сложнее. вы можете сохранить последние n страниц/путей, запрошенных пользователем, и оставить остальных, как указано выше. Вам не нужно изменять структуру таблицы, просто разрешите несколько строк на пользователя. (Комбинация user_id + путь должен быть уникальным, хотя)

Надежда, что помогает, чтобы вы начали

+0

Все понятно, кроме 2). Когда пользователь покинул страницу, я удалю соответствующую строку. Как это сделать? Также около 3) способ подсчета всех пользовательских строк перед добавлением новых, кажется, не очень эффективен. – Anton

+0

2) вы можете попробовать отправить ajax-запрос на сервер, чтобы удалить эту страницу из записей пользователя, например. '$ (window) .unload()' – mindandmedia

+0

3) Я не уверен, что понимаю, что вы имеете в виду. вам не нужно проверять, существует ли комманда user_id/path, в mysql вы можете просто использовать 'ON DUPLICATE KEY UPDATE' (проверить документы) – mindandmedia

Смежные вопросы