您可以通过在他们登录时设置日期时间来完成此操作。
因此,当用户登录时,您会更新 mysql 字段,即DATETIME
, 就像是...
$q = $dbc -> prepare("UPDATE accounts SET loggedOn = NOW() WHERE username = ?");
$q -> execute(array($_SESSION['username']));
现在您所要做的就是在数据库表中创建更多列,其中一个称为totalTime
,还有一个叫active
或者任何你真正喜欢的东西。
在每个页面上加载更新active
这是一个DATETIME
列还带有NOW()
,
$q = $dbc -> prepare("UPDATE accounts SET active = NOW() WHERE username = ?");
$q -> execute(array($_SESSION['username']));
这可以确保您知道用户是否仍然在线,您可以检查他们上次活动的时间。现在假设,如果 5 分钟不活动后,您想找到您简单活动的总时间,
$q = $dbc -> prepare("UPDATE accounts SET totalTime = ADDDATE(totalTime, DATEDIFF(NOW(), loggedOn)) WHERE active < DATE_SUB(NOW(), INTERVAL 5 MINUTE)");
$q -> execute();
上面的作用是,如果用户不活动 5 分钟,就会花费loggedOn
时间减去当前时间,得到网站上的总时间并将其添加到DATETIME
column totalTime
.
只需将最后一个查询设置为每 5 分钟一次的 cron 集,您就可以非常准确地测量人们在您网站上的时间。