如何使用 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中文网其他相关文章!