gpt4 book ai didi

php - 确定用户是否在线的最简单方法是什么? (PHP/MYSQL)

转载 作者:IT老高 更新时间:2023-10-28 12:59:46 27 4
gpt4 key购买 nike

有没有办法可以通过 session 来了解用户是否在线?

即:使用登录,我设置了 $_SESSION 变量,用户超时 - cookie 垃圾收集器更新数据库以将其状态更新为离线。

编辑: 我想要一个不涉及时间或日期的解决方案。我想要一些东西来参加 session 或类似的事情。猜测某人是否在线不足以满足我的需求。

最佳答案

不必费心弄清楚时区之间的差异——这没有必要。

每当用户访问一个页面时,在他们的 Users 表的记录中设置/更新一个 lastActiveTime 字段。然后,做一个 COUNT对于在过去 5 分钟内具有 lastActiveTime 的所有用户。除此之外,它们可以被视为“离线”。

如果您使用服务器时间,请通过 NOW() MySQL 中的函数,您将避免处理时区的需要。这是跟踪当前在线用户数量(即在最后 x 分钟内活跃)的标准方法。

不断更新

如果您想知道它们仍然处于事件状态(即使它们没有从一个页面跳转到另一个页面),您可以添加一些 JavaScript 来每 60 秒 ping 您的服务器。它的工作方式与我最初的建议相同,但它会更新您的记录,而无需用户至少每五分钟疯狂浏览一次您的网站。

2009 年原始代码

var stillAlive = setInterval(function () {
/* XHR back to server
Example uses jQuery */
$.get("stillAlive.php");
}, 60000);

2022 年更新代码

我们可以使用 fetchpromises今天更准确地发出这些呼吁。 Fetch 将取代我们之前使用 jQuery 的 XHR 方法。 Fetch 返回一个 Promise,我们将使用它(通过 await 关键字)来推迟下一次调用的时间。一旦对 stillAlive.php 的调用完成并检索到响应,我们将在 60 秒后设置下一个 ping

(async function ping () {
// Asynchronously call stillAlive.php
await fetch( "stillAlive.php" );
// Issue this call again in 60 seconds
setTimeout( ping, 60_000 );
}());

关于php - 确定用户是否在线的最简单方法是什么? (PHP/MYSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051895/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com