聊天中的PHP会话,浏览器崩溃

时间:2014-03-27 14:40:23

标签: php session browser crash

我是意大利人,我的英语不好,但我试着解释一下我想问你的意思:)

我想问你一个关于存储在服务器上的PHP和Sessions的问题。

我正在使用php和mysql进行聊天在线游戏。 我需要的是使用php检测过期会话是否不活动。

当用户登录游戏时,我会在数据库上更新表格。我更新的这一列是用户完成的最新操作的时间戳。然后,我为客户端X启动会话。如果此列为空,则表示用户已注销。

如果用户正确注销(游戏中的按钮),使用php我会破坏会话并使用空时间戳更新数据库列,因此用户结果正确注销,但如果有浏览器崩溃? 如何检测会话是否因浏览器崩溃而被破坏?

谢谢:)

2 个答案:

答案 0 :(得分:0)

您可以将连接ID​​存储在单独的表中,运行一个循环,定期检查这些连接以查找客户端定期发送的表示活动的消息 如果时间差大于消息更新间隔一定的余量,则会丢弃连接和/或更新表

答案 1 :(得分:0)

你必须设置"超时",例如10分钟(600秒) 因此,对于用户的任何操作,您可以通过date_last_action和now()的差异来检查他当前是否处于活动状态。

例如。

  

登录:2014-03-27 15:49:00

     

最后一次行动:2014-03-27 15:51:00(距上次行动仅2分钟   [登录])

     

最后动作:2014-03-27 16:21:00(随着时间的推移,如此清除db记录,   删除他的会话)

$date_now = time(); 
$date= DATA VALUE OF LAST CURRENT USER ACTION;
$date1 = time();
$date2 = mktime($hh,$ii,$ss,$mm,$gg,$aaaa);

$dateDiff    = $date1 - $date2;
$fullDays = floor($dateDiff/(60*60*24));
$fullHours = floor(($dateDiff-($fullDays*60*60*24))/(60*60));
$fullMinutes = floor(($dateDiff-($fullDays*60*60*24)-($fullHours*60*60))/60);

$deadline_in_minutes=10;

if($fullMinutes>$deadline_in_minutes)   
    {
       //do logout clear session
    }

侨!

相关问题