/** * 用户在线时长统计 */ public function onlineTime() { $configTime = 10;//分 if (isset($GLOBALS['config']['user']['online_time'])) { $configTime = $GLOBALS['config']['user']['online_time']; } $user = $GLOBALS['user']; if ($user['user_id']) { $where = ['user_id' => $user['user_id'], 'online_date' => date('Ymd')]; $online = model('UserOnline')->where($where)->find(); if (!$online) { model('UserOnline')->insert([ 'user_id' => $user['user_id'], 'online_date' => date('Ymd'), 'online_time' => 0, ]); $online = model('UserOnline')->where($where)->find(); } $seenKey = 'app-user-last-seen'; $lastSeenTime = Cache::get($seenKey . $user['user_id']); $now = time(); if ($lastSeenTime != null) { $time = $online['online_time'] + ($now - $lastSeenTime); $online->save(['online_time' => $time]); } Cache::set($seenKey . $user['user_id'], $now, $configTime * 60); } }