php会话每24小时清理一次

时间:2011-06-07 16:44:24

标签: php

我希望每24小时清理一个会话变量。我不想杀死或取消设置所有会话,每天24小时不会设置一个会话。

4 个答案:

答案 0 :(得分:2)

尝试将Cookie过期时间设置为now()+ 24小时......

答案 1 :(得分:1)

创建会话时,请写入时间戳。然后你使用seesion检查实际时间戳和创建会话,然后如果差异比86400差,那么删除会话并创建新会话。

此解决方案可防止用户使用超过24小时的会话。您可以将其他比较算法应用于例如。阻止用户在当天凌晨1点之前使用会话。如果你想在每天凌晨1点每隔24小时进行一次擦除,那么将会非常相同。

答案 2 :(得分:0)

在客户端上创建第一个会话时,只需给它一个日期:

if(!isset($_SESSION['date'])
    $_SESSION['date'] = date('m_d_y');

然后每当页面更改时检查该日期:

if($_SESSION['date'] == date('m_d_y')){
   //still today
}
else {
   //destroy session
}

或者您可以使用时间戳并根据小时数进行检查:

if(!isset($_SESSION['creationTime'])
    $_SESSION['creationTime'] = time();

if (time() - $_SESSION['creationTime'] <= 60*60*24 ){
   //still today
}
else {
   //destroy session
}

答案 3 :(得分:0)

创建会话时(可能在用户登录时),声明会话超时:

session_start(); 
$_SESSION["timeout"] = time()+ (60*60*24);

创建后端函数/页面,其中jquery可以每隔10秒/ 5秒调用一次(我保存为get_session.php):

session_start(); 
$session_life = time() - $_SESSION["timeout"];
$inactive = 0; 

if($session_life > $inactive){  
   session_destroy(); 
   echo 'Destroyed';
}

jquery脚本每5秒运行一次(建议在页面的母版页/模板页眉/页脚):

<script type="text/javascript">
window.setInterval(function(){
  sessionHeartBeat();
}, 5000);
function sessionHeartBeat(){
$.ajax({
  url: 'get_session.php',
  success: function(response){
  console.log(response);
  }
});
}
</script>