从mysql表中减去上次活动的时间()?

时间:2011-08-27 20:37:38

标签: php mysql

我在php中创建了一个简单的在线用户脚本,到目前为止它就是这样。

$online_users = time() - 900;

$q = $dbc -> prepare("SELECT * FROM accounts WHERE online > ? ORDER BY username");
$q -> execute(array($online_users));
$result = $q -> rowCount();

在每个成员的页面上,每次用户点击时,“在线”行都会使用当前时间()进行更新。

如你所见$ online_users,是当前时间减去15分钟。然后我可以看出他们是否在过去的15分钟内在网站上活跃,并做了一段时间的循环来解决所有问题。

我的问题是,我怎样才能找出他们没有活动的确切时间(以秒为单位),这样我就可以显示一条信息;

'最近有效45秒前'或'最后有效14分钟前'

我希望我已经很好地解释了这一点,并且谢谢:)

2 个答案:

答案 0 :(得分:1)

我想我可能误解了你的问题,但这应该就像从当前时间减去最后一次活动时间(在你的数据库中)一样简单。

$inactive_time = time() - last_activity;

然后,您可以通过查看“$ inactive_time”是否大于“60”来确定是否显示“秒”或“分钟”。

答案 1 :(得分:1)

试试这个:

$resulted_account = $q->fetchAll();

foreach($resulted_account as $account) {
    $inactive_time = $account['online'] - $online_users;
    if ($inactive_time < 60)  {
        echo "Last active $inactive_time seconds ago";
    } else {
        echo "Last active" .date("i", $inactive_time) . "minutes ago";        
    }
}