我正在尝试构建一个简单的系统来指示用户是否在线。但我有一个问题
当用户关闭水龙头或浏览器时,ajax代码无法刷新处理用户跟踪活动的页面。
我的php代码,如果用户在2分钟内处于非活动状态,则将值更改为0
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 61)) {
$query = "UPDATE [ccc].[users] SET active = 0 WHERE ldap ='$ldap'";
sqlsrv_query($conn,$query);
}
jQuery代码每5秒检查一次
$(document).ready(function () {
/*check existing users*/
function session_checking() {
$.post("../ajax-session.php", function (data) {
});
}
setInterval(session_checking, 5000);
});
如果用户关闭浏览器,如何将状态更改为0?
据我所知,当用户关闭选项卡/窗口时,没有办法通知服务器。
也许您可以创建一个任务来不断检查用户的活动,从而使他们不活动:
UPDATE users SET is_online = 0 WHERE is_online = 1 AND last_activity <= [WHAT YOU NEED]
考虑到您将经常运行上述查询,请记住在表上创建适当的索引。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句