You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP Unix时间戳判断管理员在线:15分钟阈值设置疑问

搞定管理员在线状态判断的问题

嘿,我来帮你把这个问题捋明白!首先敲个关键知识点:$rowAdmins['activity']存储的Unix时间戳,单位绝对是秒——它记录的是从1970年1月1日零点到管理员最后一次活动的总秒数。

那你看到的现有代码里的<60,意思就是「距离最后一次活动还不到60秒」,也就是1分钟内有操作,所以标记为在线。

现在你要实现15分钟无活动就标记离线,先把15分钟转换成秒:15×60=900秒。接下来分两种场景给你调整代码:

场景1:PHP层面判断状态

如果是在PHP里计算时间差来判断在线/离线,代码可以改成这样:

<?php
$currentTimestamp = time(); // 获取当前秒级时间戳
$findAdmins = $odb->prepare("SELECT * FROM `users` WHERE `role` = 'admin'");
$findAdmins->execute();

while ($rowAdmins = $findAdmins->fetch(PDO::FETCH_ASSOC)) {
    // 计算最后活动到现在的间隔秒数
    $inactiveDuration = $currentTimestamp - $rowAdmins['activity'];
    // 15分钟=900秒,间隔小于900秒就是在线
    if ($inactiveDuration < 900) {
        echo "<span style='color: #2ecc71;'>在线</span>";
    } else {
        echo "<span style='color: #e74c3c;'>离线</span>";
    }
}
?>

场景2:SQL层面直接筛选在线管理员

如果想直接从数据库里只查出15分钟内有活动的管理员,SQL语句可以这么写:

SELECT * FROM `users` 
WHERE `role` = 'admin' 
AND `activity` > (UNIX_TIMESTAMP() - 900)

这里UNIX_TIMESTAMP()返回当前秒级时间戳,减去900秒就是15分钟前的时间,只要管理员最后活动时间在这个时间之后,就说明是在线状态。

这样调整后,就能精准实现你要的「15分钟无活动标记离线」的需求啦~

内容的提问来源于stack exchange,提问作者Zac Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:07:41