如何使用 Session 和 MySQL 確定用戶在線狀態
即時確定用戶是否在線對於各種應用程式至關重要。雖然為此目的使用會話是一種常見方法,但它需要找到一種最佳解決方案,能夠準確追蹤使用者活動,而不依賴基於時間的閾值。
實現此目的的一種方法是利用 Users 中的 lastActiveTime 欄位桌。每次使用者造訪頁面時都可以更新該欄位。透過定期查詢表中特定時間範圍(例如過去 5 分鐘)內更新的 LastActiveTime 的用戶,您可以確定目前誰在線上。
例如,使用MySQL 的NOW() 函數檢索伺服器-side time 確保跨時區的一致性:
<?php $query = "SELECT COUNT(*) AS online_count FROM Users WHERE lastActiveTime >= NOW() - INTERVAL 5 MINUTE"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_assoc($result); $onlineCount = $row['online_count']; ?>
但是,要追蹤連續的使用者活動,請考慮實作JavaScript 以定期(例如每60 秒)對伺服器執行ping 操作。這樣,即使用戶沒有主動瀏覽網站,也會被標記為線上。
這是使用fetch 和Promise 更新的JavaScript 程式碼片段:
<code class="js">(async function ping() { try { await fetch("stillAlive.php"); } catch (error) { console.error(error); } setTimeout(ping, 60_000); }());</code>
透過利用會話和lastActiveTime 字段,結合JavaScript ping 機制,可以在PHP 和MySQL 中有效地確定用戶在線狀態,而無需依賴基於時間的標準。
以上是如何使用 PHP 和 MySQL 即時確定使用者線上狀態:綜合指南。的詳細內容。更多資訊請關注PHP中文網其他相關文章!