public function checkOnline()
{
$startTime = time() - $this->stats_step;
$day = date('Y-m-d');
// 今日统计数据
$sql = 'SELECT * FROM ' . C('DB_PREFIX') . "online_stats WHERE day ='{$day}'";
$dayData = $this->odb->query($sql);
if (!empty($dayData)) {
// 在线注册用户
$sql = 'SELECT COUNT(1) AS pu FROM ' . C('DB_PREFIX') . "online WHERE uid !=0 AND activeTime >= {$startTime}";
$onlineData = $this->odb->query($sql);
$set = array();
if ($onlineData && $onlineData[0]['pu'] > 0 && $onlineData[0]['pu'] > $dayData[0]['most_online_users']) {
$set[] = 'most_online_users = ' . $onlineData[0]['pu'];
}
// 在线游客
$sql = 'SELECT COUNT(ip) AS pu FROM ' . C('DB_PREFIX') . "online WHERE uid = 0 AND activeTime >= {$startTime}";
$onlineGuestData = $this->odb->query($sql);
if ($onlineGuestData && $onlineGuestData[0]['pu'] > 0 && $onlineGuestData[0]['pu'] > $dayData[0]['most_online_guests']) {
$set[] = ' most_online_guests = ' . $onlineGuestData[0]['pu'];
}
$mostUser = intval($onlineData[0]['pu']) + intval($onlineGuestData[0]['pu']);
if (empty($mostUser)) {
$mostUser = 1;
}
if ($mostUser > $dayData[0]['most_online']) {
$set[] = ' most_online = ' . $mostUser;
$set[] = ' most_online_time =' . time();
}
if (!empty($set)) {
$sql = ' UPDATE ' . C('DB_PREFIX') . 'online_stats SET ' . implode(',', $set) . " WHERE day = '{$day}'";
$this->odb->execute($sql);
}
}
}