Список пользователей онлайн

Bravo Oscar April 14, 2010
1486
33
0
0

Разворошим это забытое всеми сообщество. Надеюсь это родит ещё ряд постов (хотя по традиции, с меня ещё один пост). Кстати, пост о необходимости форматирования исходных кодов так и не попал на...

Разворошим это забытое всеми сообщество.

Надеюсь это родит ещё ряд постов (хотя по традиции, с меня ещё один пост).

Кстати, пост о необходимости форматирования исходных кодов так и не попал на главную. Конечно, ведь там не про Баркемп.

Поэтому придется все исходные коды выложить на сторонний ресурс. Трахаться со здешним редактором желания нет.

В общем, задача такая: узнать кто же у нас шарится по сайту в данный момент?

Что-то типа "who is online"

 

 

 

Узнаем мы эту информацию конечно же из сессии пользователя.

В ЗФ есть возможность хранить сессии в базе данных. Для этого используется класс Zend_Session_SaveHandler_DbTable.

Им мы и воспользуемся, слегка расширив его под наши нужды.

Добавляем в таблицу session поле user_id, где будем хранить ID активного юзера. По этой ссылке с крутым номером SQL-запрос: http://codepaste.ru/3333/

Зеркало:http://www.copypastecode.com/26475/

В файле Bootstrap.php создаем функцию _initSession() http://codepaste.ru/3334/

Зеркало:http://www.copypastecode.com/26479/

App_SessionService - это файл SessionService.php в папке App (папка для собственных классов), который наследует класс Zend_Session_SaveHandler_DbTable

Копируем и переписываем функции __construct и write и добавляем определение переменной поля user_id и функцию, которая берет из Zend_Auth необходимые данные.

Вот его листинг: http://codepaste.ru/3335/

Зеркало: http://www.copypastecode.com/26483/

Вообще, можно собирать любую информацию о пользователе (IP, браузер и т.д.). Для этого достаточно добавить соответствующие поля в таблицу и изменить код, подобно добавлению 'user_id'.

Как-то так. Вопросы, замечания и более крутой код как всегда в комменты. :)

Оцените пост

0

Комментарии

0
На районе я чувствую себя академиком, а рядом с вами - первоклашкой прогульщиком)
0
Не скромничайте! :)
А на самом деле, в этом посте просто слова страшные, а так ничего сложного. :)
0
База данных не будет в шоке от такого хранения?
0
Подскажите лучший способ хранения.
0
В памяти. Мемкеш или редис, например. Для редиса даже хендлер есть, в редиске.
Показать комментарии