php使用setinterval检测用户是否处于脱机状态?

时间:2015-02-13 14:04:42

标签: php mysql

大家好我正在使用PHP创建在线/离线系统。

当用户登录时会设置会话并且用户被认为是在线并且我运行一个记录时间()的设置间隔功能;每隔10秒进入我的数据库。



setInterval(function(){

//update time every 10 seconds
$.get("timeupdate.php");

}, 10000);




当我必须检测用户何时离线并且我有点困惑时,我需要在下一阶段取得一些指导。

我是否运行if else语句?

$time = time();
$time2 = $row['time_update'] -> last updated time in my database
if($time > $time2 + 20) {
    echo "user is offline";
}

因为如果$time(当前的unix时间戳)大于上次更新的unix时间戳,那么10秒的setinterval则是用户离线。

我是对的吗?以及如何实现此显示离线文件?

1 个答案:

答案 0 :(得分:0)

为什么在数据库中的数据时用PHP实现逻辑?如果您正在使用MySQL日期时间....

SELECT last_seen_seconds_ago
, IF($MAXINTERVAL*1.05>last_seen_seconds_ago, 1, 0) AS status
FROM (
SELECT UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(time_update) 
   AS last_seen_seconds_ago 
FROM yourtable
WHERE user='$user') ilv

(允许5%的差异)