Пользователи онлайн, CodeIgniter и сеансы - PullRequest
3 голосов
/ 22 января 2012

Хорошо, я использую CodeIgniter в качестве MVC для проекта, над которым я работаю с парой моих приятелей.Мы также используем поддержку сеанса базы данных CI.Учитывая это, я знаю, что концепции «Кто в сети» уже существуют, но ни одна из них, на самом деле, не отвечает нашим потребностям.Разрабатываемый нами сервис представляет собой автономную SaaS-подобную систему, но в то же время мы позволяем нашим пользователям также общаться друг с другом.При этом мы даем им возможность делиться с кем-то, кому они конкретно нужны, например, информация о том, кто находится в сети, когда, где и т. Д. Так что я знаю, что сеансы CI ловят IP-адрес, как и мы, когда пользователь входит в систему.

Так чтоМне интересно, является ли правдоподобной идея думать, что я могу использовать данные сеанса такими, какие они есть, сравнивать ips в базе данных сеансов с теми, которые вошли в систему, чтобы в некотором смысле создать свое собственное маленькое «Кто онлайн», специфичный длялюди, которые "дружат" друг с другом через наш сервис.Если это хорошая и потенциальная идея, что бы кто-нибудь из вас предложил в качестве средства ее решения и обработки для этого типа дисплея?Я только спрашиваю, потому что я не на 100% знаю, как работают сеансы с помощью CI, поэтому я не уверен, будет ли это работать в мою пользу, как я сейчас себе представляю.

Если мое воображение, однако, убегает со мной,что было бы хорошим способом решения этой проблемы в противном случае?

EDIT После входа в систему на 2 компьютерах я вижу, что сеанс CI в БД имеет 2 с тем же IP, поэтому мой первоначальный шаблон мыслиКажется, есть недостатки.

Также спасибо за голосование «за», кто бы вы ни были, вы могли бы хотя бы сказать, почему в комментарии мне очень интересно узнать, как реализовать эту идею, но я могу ».получить отзыв об этом?Если вам известна статья или пост, которые могут мне помочь, по крайней мере, укажите мне на это, потому что мои поиски не дают ничего общего с тем, что я пытаюсь объяснить здесь.

1 Ответ

4 голосов
/ 24 января 2012

Как правило, вы хотите проверить таблицу _ci_sessions (или как там вас зовут) для записей, где столбец last_activity находится в определенном диапазоне текущего времени (5 минут, 10 минут и т. Д.). С HTTP, нет никакого отличного способа узнать точный момент, когда кто-то прекратил свою сессию (если только они явно не вышли из системы, и вы не уничтожили сессию самостоятельно). Вы можете сделать это с помощью сокетов, но это обычно излишне для чего-то подобного.

После того, как вы получите список «потенциальных» сессий, вам все равно придется циклически проходить через каждый (не забывайте десериализовать столбец user_data!), Чтобы найти те, которые имеют правильный ключ / значение userdata, которые составляют «» вход "на основе вашей системы аутентификации. Я бы сделал это сначала, чтобы получить подтверждение концепции, а затем найти способ кэшировать результат по нескольким запросам, так как в любом случае он не точен на уровне запросов. Вы бы справились без дополнительной нагрузки на каждый запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...