Usuários Online, CodeIgniter e Sessões

Ok, estou usando CodeIgniter como meu MVC para um projeto com o qual estou trabalhando com alguns amigos. Também estamos usando o suporte da session de database da CI. Com isso eu sei que existem conceitos “Quem está online” já existentes, mas nenhum deles realmente se aplica às nossas necessidades por palavra. O serviço que estamos lançando é um sistema SaaS autônomo, no entanto, ao mesmo tempo, estamos permitindo que nossos usuários se comuniquem uns com os outros. Com isso, nós os deixamos compartilhar com quem eles desejam informações específicas, como quem está online quando, onde, etc. Por isso, eu disse que sei que as sessões da CI capturam o IP, assim como quando um usuário faz logon.

Então, o que eu estou pensando é, é uma idéia plausível pensar que eu posso explorar os dados da session para o que é, para comparar os ips no DB da session com os logados para, de certo modo, criar meu próprio “Who’s Online” específico para pessoas que são “amigáveis” um com o outro através do nosso serviço. Se é uma boa e potencial idéia, o que qualquer um de vocês sugeriria como um meio de abordá-lo e lidar com isso para esse tipo de exibição? Eu só pergunto porque eu não sou 100% como as sessões através do CI funcionam, então não tenho certeza se vai trabalhar em meu favor, como eu atualmente estou imaginando.

Se a minha imaginação está fugindo comigo, qual seria uma boa maneira de resolver isso de outra forma?

EDITAR Depois de iniciar session em 2 computadores, vejo que a session de CI no database tem 2 com o mesmo IP, então meu patrão de pensamento inicial parece ser defeituoso.

Também obrigado pelo voto Down, quem quer que você seja, você poderia ter, pelo menos, dito por que em um comentário, estou seriamente curioso para saber como conseguir essa idéia, mas não consigo obter feedback sobre isso? Se você conhece um artigo ou postar aqui que pode me ajudar, pelo menos, me apontar para isso, porque minhas buscas não dão nada relevante ao que estou tentando explicar aqui.

Basicamente, você deseja verificar a tabela _ci_sessions (ou seja qual for o seu nome) para os registros onde a coluna last_activity está dentro de um determinado intervalo da hora atual (5 minutos, 10 minutos, etc.). Com o HTTP, não há uma ótima maneira de saber o momento exato em que alguém abandonou sua session (a menos que eles se desconectem explicitamente e você destrua a session você mesmo). Você poderia fazê-lo com sockets, mas isso geralmente é um exagero para algo assim.

Depois de obter uma lista de sessões “potenciais”, você ainda precisará percorrer cada um (lembre-se de desmarcar a coluna user_data !) Para encontrar aqueles que tenham a chave / valor de usuário apropriado para constituir um “login” com base em sua sistema de autenticação. Eu faria isso primeiro para obter uma prova de conceito e, em seguida, encontre uma maneira de armazenar em cache o resultado em alguns pedidos, pois não é precisão de nível de requisição de qualquer maneira, você faria melhor sem a carga extra em todas as solicitações.