php判斷是否在線
㈠ php 如何得知ip是否在線
比較簡單的就是資料庫存session,默認的session都是在文件里存放著
客戶端請求你的站點,會自動創建一個session,(不管是不是你的會員都會自動創建session)。
1,你需要一個可以實現session入庫的類,此類很多,實現原理其實很簡單,你也可以自己寫
2,在session中加入ip(比較好的session類中都會有這個欄位)
3,查session表數據有沒有你需要的ip,沒有就不在線了
㈡ PHP網站中,如何判斷用戶是否是在線的狀態
普通http網站是一種無狀態連接,每次一個請求,一個應答,沒有長連接狀態。
但是可以通過記錄訪問時間,來確定用戶的狀態。
用戶登錄後,每次訪問,更新一下最近訪問時間在資料庫里
在用戶頁面的公共部分,做一個定時輪詢,n秒一次(防止用戶打開頁面後放著不動,看資料或者做別的)
伺服器端做一個定時,將最近時間在n秒內的用戶設為在線狀態,將最近時間大於n秒的(說明已經關了頁面),設為離線狀態。 如果是普通 web空間無法配置定時器,可以在每次用戶訪問時處理一次(如果用戶量大,需要做時間判斷,防止同時訪問量多時多次重復處理,影響伺服器性能)
如果能確定一個用戶的訪問,只有一個瀏覽器窗口,可以在窗口裡加一個關閉事件(onbeforeunload),在此事件中發送一個退出請求,主動設為離線狀態。這樣狀態管理會更完美一些
這樣基本就可以完成一個在線狀態的管理。具體n 設為多少可根據情況而定,一般5-30秒都是合理的,太短了伺服器壓力比較大,太長了誤差會比較大
㈢ php利用session怎麼判斷用戶已離線
方法有好多種,但應該都跟心跳請求類似。
首先用戶打開一個頁面後,頁面裡面會有段js腳本來反復請求一個地址,即判斷用戶是否在線的地址(跟新浪微博隔一段時間請求一個地址查看是否有新消息類似)
比如判斷頁面為A,打開的頁面為B ,則B 內的js腳本以ajax請求的方式每隔1分鍾來訪問A,A可以記錄下最後一次的請求時間,然後你就可以拿這個最後一次請求的時間來判斷用戶是否離線,比如B每隔1分鍾發送一次請求,如果最後活動時間與當前時間相差兩分鍾,就可以認為用戶已離線。
還有一種方法,就是利用js的onunload事件
當用戶關閉瀏覽器的時候,可以用onunload發送一個請求,注銷掉session,或者將用戶狀態置為離線,都可以,不過沒有上面靠譜就是,因為F5刷新頁面也同樣觸onunload事件
方法還有很多,結合你需要實現的功能和業務,多想想就出來了
㈣ php做用戶在線與離線狀態
在用戶表裡加個session欄位存取時間戳。在文件頭每次刷新就更新它。一定時間不刷新就表示人物離線了。讀取這個會員數據的時候和當前時間戳對比小於一定數就離線了