2012-01-22 68 views
3

好吧,我正在使用CodeIgniter作爲我的MVC項目,我正在與我的幾個朋友一起工作。我們也在使用CI的數據庫會話支持。有了這些,我確實知道存在「誰在線」的概念,但沒有一個真正適用於我們的需求。我們推出的服務是一個獨立的SaaS系統,但同時我們也允許我們的用戶相互溝通。因此,我們讓他們與誰分享他們希望具體的信息,如誰在網上什麼時候,在哪裏,等等。因此,據說我知道CI的會話捕獲IP,就像我們在用戶登錄時一樣。用戶在線,CodeIgniter和會話

所以我是什麼想知道的是,是否有理由認爲我可以利用會話數據的原理,將會話數據庫中的ips與登錄的數據進行比較,從某種意義上來說,可以建立我自己的小型「誰在線」通過我們的服務彼此「友好」。如果這是一個好的和潛在的想法,你們會有什麼建議作爲解決這個問題和處理這種顯示類型的手段?我只問因爲我不是100%如何通過CI工作會議,所以我不確定它是否像我目前想象的那樣對我有利。

如果我的想象力正在與我一起逃走,那麼以其他方式解決這個問題的好方法是什麼?

編輯 在2臺電腦登錄後,我看到,在DB的CI會議有2個相同的IP,所以我最初的想法行話似乎是有缺陷的。

同樣感謝您的投票,無論您是誰,您至少可以說爲什麼在評論中,我很想知道如何實現這個想法,但我無法得到它的反饋?如果你知道某篇文章或文章能夠幫助我,那麼至少可以指出我的觀點,因爲我的搜索結果與我在此嘗試解釋的內容沒有任何關係。

回答

4

基本上,您想檢查_ci_sessions表(或任何您的名字)的last_activity列在當前時間(5分鐘,10分鐘等)的某個範圍內的記錄。有了HTTP,沒有什麼好的方法可以知道某人放棄了他們的會話(除非他們明確註銷,並且自己破壞了會話)。你可以用套接字來完成,但這通常會導致這樣的問題。

獲得「潛在」會話列表後,您仍然需要遍歷每個會話(記住要反序列化user_data列!)以找到具有正確的userdata鍵/值以構成「登錄「基於你的認證系統。我首先要做的是獲取概念證明,然後找到一種方法來緩存幾個請求的結果,因爲它無論如何都不是請求級別準確的,如果沒有每個請求的額外負載,您會做得更好。