0

我正在尝试开发一个聊天应用程序,我需要知道其他用户是否处于活动状态。我已经经历了“时间戳”示例(如果最后一个活动超过指定时间,则认为用户离线)和问题这种方法是这段代码需要通过javascript定期重复执行。

所以,我在想,如果有任何方法可以通过知道会话 ID 来检查服务器中的会话是否处于活动状态。如果可能的话,我会在 MYSQL 表中为“最后一个会话 ID”创建一个额外的列,我会每次我发送消息时检查它是处于活动状态还是关闭状态,我可以确定对方是否处于活动状态。

4

2 回答 2

0

You can make this with ajax and php:

So you have to set in javascript the setInterval:

setInterval(function() {
 $.ajax({
 url: 'ajax.php',
 params:{
  action:'checkSessionTime'  
 },
  success: function(response) {
   var resp = JSON.parse(response.responseText);
   if(resp.state != 'valid')
   {
  location.reload();
    }
 }
  });
  }, 1000 * 60* 10);

In PHP you have a function like this:

function checkSessionTime(){
if($_SESSION['YourSessionId oder YourUserId']){
 echo json_encode(array('success' => true, 'state' => 'valid'));
}else{
echo json_encode(array('success' => true, 'state' => 'expired'));
}

}

于 2013-09-27T10:46:27.917 回答
0

您必须检查在服务器上保留有关会话信息的文件 -> 但这不是一个好主意。我认为更好的方法是重写默认会话系统,并在数据库中处理它们(保留 session_id、last_action、expire_date)。从这一点来说,完成你的任务就很容易了。

于 2013-09-27T10:43:15.930 回答