Mic*_*ICE 37 javascript php mysql offline
有没有办法让我们可以通过会话来了解用户是否在线?
即:使用登录,我设置$ _SESSION变量,用户超时cookie垃圾收集器更新数据库以将其状态更新为脱机.
EDIT:我想要一个不涉及时间或日期的解决方案.我想要一些东西可以骑在会话或类似的东西上.猜猜某人是否在线并不足以满足我的需求.
Sam*_*son 89
不要费心去弄清楚时区之间的差异.这不是必要的.
每当用户访问页面时,更新其用户表last-updated-time记录中的字段.然后对最近5分钟内具有最后更新时间的所有用户进行查询.除此之外的任何东西,它们都被认为是"离线".
如果您使用服务器时间,通过MySQL中的NOW()函数,您将侧面计算时区之间的差异.
这是跟踪目前有多少用户在线的标准方式(意思是,在过去几分钟内处于活动状态).
如果你想知道他们仍然活跃,即使他们没有从一个页面跳到另一个页面,包括一些javascript来每隔60秒左右ping你的服务器,让你知道他们还活着.它的工作方式与我原来的建议相同,但它会更新您的记录,而不要求他们至少每五分钟疯狂浏览一次您的网站.
var stillAlive = setInterval(function () {
/* XHR back to server
Example uses jQuery */
$.get("stillAlive.php");
}, 60000);
Run Code Online (Sandbox Code Playgroud)
根据定义,您所要求的(澄清之后)是不可能的.HTTP是一种无连接协议,因此只要用户点击页面并且所有内容从服务器返回到用户的浏览器,两者之间就没有连接.有人在您网站上"在线"不到一秒钟.
您可以做的一件事是在您的网页上使用JavaScript定期将AJAX请求发回服务器,其中包括识别信息,以及当用户离开页面时使用window.onbeforeunload的不同AJAX请求.
我的方式可能不是最好的方式,但由于我的网站和用户群都在 mysql 数据库中,当用户登录我的网站时,
然后在每个页面加载我检查在线时间会话,如果它存在,我检查它的年龄,如果它小于 5 分钟,我什么都不做,如果它大于 5 分钟,然后我更新使用当前时间再次使用会话时间,并使用时间更新在线用户表
然后我有一个 cron 作业,它每 10 - 15 分钟运行一次,它从在线表中删除任何使用,如果在线时间在 X 分钟内更新,则将用户表标记为离线
| 归档时间: |
|
| 查看次数: |
32662 次 |
| 最近记录: |