[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: онлайн
Hunter80
А как вообще организован процесс определения кто онлайн на форуме? smile.gif



Спустя 49 минут, 44 секунды (26.02.2009 - 11:35) olgatcpip написал(а):
Где?

Спустя 33 минуты, 54 секунды (26.02.2009 - 12:09) FatCat написал(а):
На этом форуме просто:

Сначала проверяется, разрешены ли куки.
Если куки разрешены, идентификатор сессии пишется в куки.
Если куки запрещены, пишется во все внутренние линки.

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

При каждом открытии страницы проверяется наличие идентификатора сессии в куках или запросе.

Если нет идентификатора сессии, проверяется, нет ли сессии для этого айпишника. Если есть гостевая сессия на этот айпишник, новая сессия не создается; если сессии нет или есть мемберская - создается новая гостевая сессия.
Таким образом, несколько мемберов могут быть одновременно с одного айпишника, но несколько гостей - нет.

У поисковых ботов всё то же, что у гостей, плюс проверка по документ-реферер.

Список "кто в онлайне" - это по сути список текущих сессий в БД.

Спустя 5 месяцев, 23 дня, 2 часа, 47 минут, 53 секунды (19.08.2009 - 13:57) Michael написал(а):
Цитата
Сессия, в которой не было активности 15 минут (время может быть изменено), удаляется из БД

А таким удалением занимается внешняя запущенная программа, или каждый раз по запросу клиентов проверка или в MySQL можно по расписанию вызывать подпрограммы?

Спустя 12 часов, 34 минуты, 20 секунд (20.08.2009 - 02:31) Gram написал(а):
Удалением сессий занимается сервер. Если у вас есть проблемы с временем жизни - самый простой способ это обратиться к хостеру. Он все сделает.

Спустя 10 часов, 42 минуты, 34 секунды (20.08.2009 - 13:14) FatCat написал(а):
Цитата (Gram @ 20.08.2009 - 03:31)
Удалением сессий занимается сервер.

У на свои сессии: создаются средствами пхп, пишутся в таблицу сессий в БД.


Цитата (Michael @ 19.08.2009 - 14:57)
удалением занимается внешняя запущенная программа, или каждый раз по запросу клиентов проверка или в MySQL можно по расписанию вызывать подпрограммы?

При каждой авторизации/деавторизации любого пользователя, включая авторизацию по кукам, выполняется запрос, что-то типа:
PHP
$query = "DELETE FROM sessions WHERE last_activity<".(time()-900);
Быстрый ответ:

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