[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Список пользователей онлайн
lans8097
Список пользователей онлайн
Посоветуйте статьи, подходы

Кто что посоветует почитать ?
n58oo
записываешь id сессии и время в базу, при каждом обращении к скрипту обновляешь, если не было обращений в течении n минут удаляешь
lans8097
Цитата (n58oo @ 12.10.2012 - 18:18)
записываешь id сессии и время в базу, при каждом обращении к скрипту обновляешь, если не было обращений в течении n минут удаляешь

Думал о таком но нужно сделать механизм чиски базы и желательно чтобы он сробатывал единожды с определённым таймом как это реализовать
Помню чтото читал про cron но не помню какие там подводные камни
lans8097
Делаю это к CMS так что нужно чтыб работало на разных хочтингах так что чтото прописывать в северные ini не вариант
n58oo
тогда можно выводить из базы только тех пользователей у кого время последнего обращения не больше N минут, и ежедневно по cronу запускать скрипт чистки базы, но мне кажется лучше сразу удалять записи, проще и быстрее обработать 100 записей чем 100.000
lans8097
Цитата (n58oo @ 12.10.2012 - 18:30)
тогда можно выводить из базы только тех пользователей у кого время последнего обращения не больше N минут, и ежедневно по cronу запускать скрипт чистки базы, но мне кажется лучше сразу удалять записи, проще и быстрее обработать 100 записей чем 100.000

Да согласен.
Почему вазник вапрос о cron так как мне кажется что будит немного напряжно если будит онлайн 50> людей и каждое обновление стр будит бамбить MYSQL с запросами на удаление
sergeiss
Для каждого юзера пишешь время его последнего обращения. При запросе на количество он-лайн юзеров находим количество тех, чье время не более определенного. Например, не более 15 минут от текущего времени. Только я не понял, что там n58oo предлагает удалять при таком подходе?
Если юзеров мало, то можно вести такой подсчет при каждом запросе на количество .
Если же юзеров много (что более вероятно для хорошего сайта), а соответственно много запросов, то можно подойти по-другому. Запускаем подсчет он-лайновых юзеров по крону, допустим 1 раз в минуту. Пишем данные в отдельный файл, таблица из БД тут не нужна. И читаем данные из этого файла. При большом количестве юзеров количество будут достаточно точное, зато мы не будем постоянно "дёргать" БД. Только 60 раз за час. Можно и раз в 30 секунд подсчет вести, конечно smile.gif Это уже зависит от желания и потребностей в "точности".

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
lans8097
Хм интересно а если какое-то харошое решение и для юникса и винды ?
denis79513
Открыл ваш вопрос и вспомнил, что достаточно скоро и мне придется решать эту проблему.
Думаю можно сделать так:
1. На сайте хранится файл со списком всех пользователей сайта и временем последнего их нахождения на сайте.
2. При запросе "кто онлайн" происходит поиск по списку с выборкой нужных строк по времени.
3. При выполнении пользователем каких-то действий, повторная запись не создается, а просто обновляется старая (изменяется время последнего посещения).

Ничего удалять не нужно и БД чистить тоже не нужно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.