Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   опция - кто и сколько народу on-line : как лучше сделать? (http://forum.oszone.net/showthread.php?t=52370)

mar 04-08-2005 22:09 345991

опция - кто и сколько народу on-line : как лучше сделать?
 
subj
имеем mysql и форум, код которого написан поверх несколько измененных классов phplib.
В результате имеем таблицу, куда записываются сессии (безотносительно к юзеру) и время их старта, систему аутентификации (в случае наличия куков срабатывает при каждом обращении к любой странице), таблицу юзеров и куки, в которых хранится username, пароль, зашифрованный в md5 и время. Изначально (когда все это писалось) считалось, что кто и сколько кого online - не понадобится. Сейчас народ желает видеть присутствующих, ну и, соответственно, встал вопрос, как это лучше осуществить. Задача - как можно меньше напрягать сервер и каналы пользователей. Хотелось бы узнать, кто какими решениями пользуется (или о каких знает), их плюсы и минусы.
То, что мне cейчас с ходу приходит в голову:
- вариант раз: с сессиями записывать и id пользователя, а при показе первой страницы делать запрос с выборкой всех id из сессий, которые не старше 15 (или скольки-то там) минут.
- при обращении к каждой странице залогоненого юзера обновлять некую новую таблицу (id, time) и выборку делать как выше, но по ней, не трогая сессии.
- сделать еще одни куки и работать с ними и новой таблицей.
Ваше мнение?

XCodeR 04-08-2005 22:31 345994

Цитата:

с сессиями записывать и id пользователя, а при показе первой страницы делать запрос с выборкой всех id из сессий, которые не старше 15 (или скольки-то там) минут
это вроде бы является стандартным. я пользовался минусов не заметил, ну не считая конечно ежестраничного ежеюзерного обращения к БД и обновленияемени жизни пользователя. вобщем то подобная вещь реализована во всех форумах и особых проблем не видно.

E-mail 05-08-2005 00:09 346013

такая же задача предстоит,

я вот обдумываю применение тут технологии ActiveXObject("Microsoft.XMLHTTP"), при событии onunload

преимущество в том что па не перегружается и соответственно трафик экономится.

ну а для тех кто просто конектом оборвались можно использовать обновление таблицы в бд при входе пользователя, но на самом деле этот метод тоже както кажется устаревшим, надо еще подумать.

какие у вас варианты?

mar 05-08-2005 00:51 346024

E-mail
я сама и сидя под виндами ActiveX не разрешаю (чего и другим желаю =)). Поэтому и при Web-программировании его не использую.
Xcode
штука в том, что у меня сейчас сессия открывается на все время работы броузера и потом не обновляется. Вот я и думаю, "сессионную" часть приложения ломать, или новый довесок сделать. В любом случае получается частое (при каждом обращении к новой странице) обновление одной и той же таблицы каждым пользователем. Как при этом себя mysql может повести? (Форум на хостинге, так что тюнинг мне не доступен, можно, правда запускать скрипты по крону)

mar 05-08-2005 03:08 346044

что-то я туплю после отпуска :/ - работы с базой на ввод (по кпайней мере в моем случае) не больше, чем при обычной работе работе с сессиями =]
Но все равно интересны и другие способы

vadimiron 05-08-2005 03:10 346045

Я бы вёл для этого отдельную таблицу, всё что больше 15 минут стераем. + Такого решения: старая система не затронута и ничего не надо менять.
А по хорошему, наверно надо добавить к сессиям и id юзера, ведь сессия для них открывается. Тогда из такой таблицы можно вытаскивать и тех, кто сейчас онлайн.

XCodeR 05-08-2005 09:56 346117

Цитата:

штука в том, что у меня сейчас сессия открывается на все время работы броузера и потом не обновляется.
а зачем её обновлять?(сессию).
на первой странице на которую зашел юзер, создаем сессию и присваиваем одной из переменных PID, а на каждой слудующей странице сверяем PID с содержимым БД..
Цитата:

А по хорошему, наверно надо добавить к сессиям и id юзера, ведь сессия для них открывается.

mar 05-08-2005 18:04 346210

Xcode
да нет, все проще:
поскольку речь идет о форуме, то негласная авторизация через куки (и заодно уточнения поля даты и теперь еще id юзера для каждой сессии) происходит при каждом обращении к приложению. (ну, а у неавторизованных ставится id гостя).
При заходе на первую страницу отрабатывает запрос, показывающий - число активных за последние 15 минут экаунтов, в том числе - число гостей, число негостей, ники (со ссылками на профили) негостей. Запрос обращается к таблицам сессий и полльзователей. Из первой отсекается время и берется id пользователя, из второй - username. Связь между таблицами через id пользователя.
Можно еще из второй таблицы брать права и ники админов выделять цветом =) (На том форуме, может быть, так и придется, потому что админы там реально консультируют народ, так что это может быть небезинтиересно :))


Время: 23:14.

Время: 23:14.
© OSzone.net 2001-