![]() |
опция - кто и сколько народу on-line : как лучше сделать?
subj
имеем mysql и форум, код которого написан поверх несколько измененных классов phplib. В результате имеем таблицу, куда записываются сессии (безотносительно к юзеру) и время их старта, систему аутентификации (в случае наличия куков срабатывает при каждом обращении к любой странице), таблицу юзеров и куки, в которых хранится username, пароль, зашифрованный в md5 и время. Изначально (когда все это писалось) считалось, что кто и сколько кого online - не понадобится. Сейчас народ желает видеть присутствующих, ну и, соответственно, встал вопрос, как это лучше осуществить. Задача - как можно меньше напрягать сервер и каналы пользователей. Хотелось бы узнать, кто какими решениями пользуется (или о каких знает), их плюсы и минусы. То, что мне cейчас с ходу приходит в голову: - вариант раз: с сессиями записывать и id пользователя, а при показе первой страницы делать запрос с выборкой всех id из сессий, которые не старше 15 (или скольки-то там) минут. - при обращении к каждой странице залогоненого юзера обновлять некую новую таблицу (id, time) и выборку делать как выше, но по ней, не трогая сессии. - сделать еще одни куки и работать с ними и новой таблицей. Ваше мнение? |
Цитата:
|
такая же задача предстоит,
я вот обдумываю применение тут технологии ActiveXObject("Microsoft.XMLHTTP"), при событии onunload преимущество в том что па не перегружается и соответственно трафик экономится. ну а для тех кто просто конектом оборвались можно использовать обновление таблицы в бд при входе пользователя, но на самом деле этот метод тоже както кажется устаревшим, надо еще подумать. какие у вас варианты? |
E-mail
я сама и сидя под виндами ActiveX не разрешаю (чего и другим желаю =)). Поэтому и при Web-программировании его не использую. Xcode штука в том, что у меня сейчас сессия открывается на все время работы броузера и потом не обновляется. Вот я и думаю, "сессионную" часть приложения ломать, или новый довесок сделать. В любом случае получается частое (при каждом обращении к новой странице) обновление одной и той же таблицы каждым пользователем. Как при этом себя mysql может повести? (Форум на хостинге, так что тюнинг мне не доступен, можно, правда запускать скрипты по крону) |
что-то я туплю после отпуска :/ - работы с базой на ввод (по кпайней мере в моем случае) не больше, чем при обычной работе работе с сессиями =]
Но все равно интересны и другие способы |
Я бы вёл для этого отдельную таблицу, всё что больше 15 минут стераем. + Такого решения: старая система не затронута и ничего не надо менять.
А по хорошему, наверно надо добавить к сессиям и id юзера, ведь сессия для них открывается. Тогда из такой таблицы можно вытаскивать и тех, кто сейчас онлайн. |
Цитата:
на первой странице на которую зашел юзер, создаем сессию и присваиваем одной из переменных PID, а на каждой слудующей странице сверяем PID с содержимым БД.. Цитата:
|
Xcode
да нет, все проще: поскольку речь идет о форуме, то негласная авторизация через куки (и заодно уточнения поля даты и теперь еще id юзера для каждой сессии) происходит при каждом обращении к приложению. (ну, а у неавторизованных ставится id гостя). При заходе на первую страницу отрабатывает запрос, показывающий - число активных за последние 15 минут экаунтов, в том числе - число гостей, число негостей, ники (со ссылками на профили) негостей. Запрос обращается к таблицам сессий и полльзователей. Из первой отсекается время и берется id пользователя, из второй - username. Связь между таблицами через id пользователя. Можно еще из второй таблицы брать права и ники админов выделять цветом =) (На том форуме, может быть, так и придется, потому что админы там реально консультируют народ, так что это может быть небезинтиересно :)) |
Время: 23:14. |
Время: 23:14.
© OSzone.net 2001-