如何在PHP中检测聊天脚本的非活动会话


how do you detect an inactive session for a chat script in PHP?

所以我正在编写类似于聊天应用程序的东西,并且需要一种方法来检测用户何时不再活跃。本质上,我需要让应用程序的其他用户知道,如果用户X离开页面或关闭浏览器,他们就会注销。除了"我在15分钟内没有收到用户X的请求,所以我认为他出局了"之外,服务器端脚本还有什么办法解决这个问题吗?

正如他们在评论中的链接中所说,您需要使用AJAX。最简单的方法(在我看来)是使用JQuery,下面是一个例子:

$(document).ready(function(){
    window.setInterval(function(){
        initiateSessionCheck();
    5000);
    function initiateSessionCheck() {
        $.ajax({
            type : 'POST',
            url : 'sessioncheck.php',
            success : function(data){
                //success
            },
            error : function(XMLHttpRequest, textStatus, errorThrown) {
                //error do something they are no longer active
            }
        });
    }
});

现在,在您的sessioncheck.php文件中,您将想要执行此

session_start();
if (!$_SESSION) { //you could check a session variable explicitly like $_SESSION['user_id'] != ''
    $return['error'] = true;
} else {
    $return['error'] = false;
}
echo json_encode($return);

这是基本的,但它应该起作用!