X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Алгоритм "Кто онлайн"
termit
сообщение 2012-07-09, 0:40
Сообщение #1
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 705
Регистрация: 2009-06-02
Из: Житомир

Репутация:   нет  
Всего: 11


Пишу, один проэкт не на Елеаноре.
Подскажите, как правильнее сделать функцию "Кто онлайн"

Подумывал, при каждом переходе пользователя по страничкам записывать время перехода, а в блоке отображать активных за последние например 15 минут.
Но!!!
+Один запрос на обновление даных при переходах
+Один при отображении блока

П.С Может с сессиями чтото намутить можно?
---------------------
И ещё вопрос такого типа. Не нарушу я каких либо "законов", если возьму стиль сабмитов с Униель?

Сообщение отредактировал termit - 2012-07-09, 1:19
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2012-07-09, 1:20
Сообщение #2
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


termit, используйте запрос не INSERT & UPDATE, а REPLACE. Ну и признаки желательно определить по которым пользователь будет считаться уникальным (IP, кука).
Перейти в начало страницы
+Цитировать сообщение
termit
сообщение 2012-07-09, 1:22
Сообщение #3
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 705
Регистрация: 2009-06-02
Из: Житомир

Репутация:   нет  
Всего: 11


Понял, спасибо)
Уникальным у меня является случайный хеш)
Перейти в начало страницы
+Цитировать сообщение
termit
сообщение 2012-07-09, 2:54
Сообщение #4
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 705
Регистрация: 2009-06-02
Из: Житомир

Репутация:   нет  
Всего: 11


(Чтото не разобрался я с реплейсом :dntknw: )
Сделал так
Изменение времени
UPDATE users SET `lastvisit`= NOW() where `id`={$id};

Проверка:
SELECT `id`,`login`,`lastvisit` from users where MINUTE(NOW())-MINUTE(`lastvisit`)<15;

Посоветуйте может что оптимизировать, я в мускуле не силён...

-------------
Только что заметил багу, проверка учитывает только минуты, и после чч:00 у меня все пользователи онлайн)))


Сообщение отредактировал termit - 2012-07-09, 3:02
Перейти в начало страницы
+Цитировать сообщение
termit
сообщение 2012-07-09, 3:25
Сообщение #5
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 705
Регистрация: 2009-06-02
Из: Житомир

Репутация:   нет  
Всего: 11


Переделал проверку так

SELECT `id`,`login`,`lastvisit` from f_users where NOW() < `lastvisit`+INTERVAL 15 MINUTE;



Сообщение отредактировал termit - 2012-07-09, 3:26
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0434 сек.    11 запросов    GZIP включен    Сейчас: 2020-12-04, 14:04