Всем привет. Ребят, поделитесь своим скриптом подсчёта онлайна на сайта, пожалуйста. В паблике ничего толкового, к сожалению, не нашёл... Буду благодарен!
(Добавление)
Или скажите хотя бы ГРАМОТНЫЙ алгоритм написания, сам напишу...
1. n1k86 - 02 Ноября, 2011 - 19:41:11 - перейти к сообщению
2. LIME - 03 Ноября, 2011 - 03:13:37 - перейти к сообщению
n1k86 имхо тривиальный алгоритм
в базе сделать поле время последнего посещения
проверять его периодически скажем раз в 5 мин
1 по cron (предпочтительно)
2 в файле хранить время последней проверки и проверять его при каждом запросе
опросив базу писать в файл онлайн и подключать его при выводе
(Добавление)
тут и чистка заодно произойдет тех кто не активен более 5 мин
ну и естественно аяксом бросать запросы периодически для обновления времени в базе
чтоб не выкинуло при простое браузера
в базе сделать поле время последнего посещения
проверять его периодически скажем раз в 5 мин
1 по cron (предпочтительно)
2 в файле хранить время последней проверки и проверять его при каждом запросе
опросив базу писать в файл онлайн и подключать его при выводе
(Добавление)
тут и чистка заодно произойдет тех кто не активен более 5 мин
ну и естественно аяксом бросать запросы периодически для обновления времени в базе
чтоб не выкинуло при простое браузера
3. ALEN - 04 Ноября, 2011 - 20:20:54 - перейти к сообщению
LIME
Для чего крон?
Создаем таблицу в базе (отдельную от обычной базы пользователей, чтоб не искать по списку пользователей-зомби). В таблице колонка time - с временной меткой time(). Вторая колонка id пользователя. Если человек авторизован и обновляет страницу, проверяем в наличии записи в таблице, если ее нет добавляем. Если есть обновляем метку time. В конце делаем дополнительный запрос, который убивает пользователей скажем с меньше чем time() - 300(5 минут) - операция будет не грузящая т.к. пользователей будет не так много.
Если нужно будет узнать кто онлайн и его данные, то при запросе используем JOIN.
Для чего крон?
Создаем таблицу в базе (отдельную от обычной базы пользователей, чтоб не искать по списку пользователей-зомби). В таблице колонка time - с временной меткой time(). Вторая колонка id пользователя. Если человек авторизован и обновляет страницу, проверяем в наличии записи в таблице, если ее нет добавляем. Если есть обновляем метку time. В конце делаем дополнительный запрос, который убивает пользователей скажем с меньше чем time() - 300(5 минут) - операция будет не грузящая т.к. пользователей будет не так много.
Если нужно будет узнать кто онлайн и его данные, то при запросе используем JOIN.
4. Давит - 04 Ноября, 2011 - 20:38:43 - перейти к сообщению
.
5. De-Luxis - 11 Ноября, 2011 - 18:15:06 - перейти к сообщению
При каждой загрузке делать update в базе поля с датой у пользователя.
потом делаем запрос в базу по дате с условием не старее 15 минут например.
потом делаем запрос в базу по дате с условием не старее 15 минут например.
6. igyan - 11 Ноября, 2011 - 21:32:28 - перейти к сообщению
Можешь почитать как сделан подсчет участников форума в книге М.Кузнецова, И.Симдянова, С. Голышева "ПРАКТИКА СОЗДАНИЯ WEB-САЙТОВ" страница 772.