功能是 统计在线访客的
我在数据库建了一个 ID(int 6) name(char 15) date(int 10) adminid(tinyint 1)的小表但有两个问题 1.如果用户有登录 我还可以通过where name=XXX 去更新他的时间戳 维持他的登录状态,但如果是访客的话 我没办法通过name去比对,通过IP的话 万一是同IP登录那只会算成一个访客,但没限制的话,访客刷新一次,数据库里就多一个在线用户,遇上没事一直刷新的,我就悲催了.想请教下 怎么写才能正确的统计访客的数量呢?2.这样写的话,我的数据库的插入删除量会很大,时间长了可能会出问题(ID涨的太快了 INT 6也许都不够用),怎么写才能避免呢?实在想不出来 麻烦指点一下 谢谢了代码如下:
//统计在线用户人数
public function online_check(){
//连数据库
$db_id = $this->db_connect(); //返回当前时间戳 为删掉过期的用户做准备
$times = date('U'); //没登陆叫访客 登陆了就取用户名
if(!$_SESSOIN['se_name']){ $username = '访客'; }else{ $username = $_SESSION['se_name']; } //把登陆信息写到数据库里面
$query = "insert into online set name='$username',date='$times',adminid='0'"; $result = $db_id->query($query); //没成功返回false
if(!$result){
return false; } //删除超时的用户信息 $times = $times - 300;
$query = "delete from online where date<'$times'"; $result = $db_id->query($query); if(!$result){ return false; }
//读取数据库里面的name
$query = "select name from online "; $result = $db_id->query($query); if(!$result){ return false; }
//以数组返回用户登录列表
$rows = $result->num_rows;
$user_list['count'] = $rows; while($rows = mysqli_fetch_object($result)){ $user_list[] = $rows->name; } return $user_list; }
我在数据库建了一个 ID(int 6) name(char 15) date(int 10) adminid(tinyint 1)的小表但有两个问题 1.如果用户有登录 我还可以通过where name=XXX 去更新他的时间戳 维持他的登录状态,但如果是访客的话 我没办法通过name去比对,通过IP的话 万一是同IP登录那只会算成一个访客,但没限制的话,访客刷新一次,数据库里就多一个在线用户,遇上没事一直刷新的,我就悲催了.想请教下 怎么写才能正确的统计访客的数量呢?2.这样写的话,我的数据库的插入删除量会很大,时间长了可能会出问题(ID涨的太快了 INT 6也许都不够用),怎么写才能避免呢?实在想不出来 麻烦指点一下 谢谢了代码如下:
//统计在线用户人数
public function online_check(){
//连数据库
$db_id = $this->db_connect(); //返回当前时间戳 为删掉过期的用户做准备
$times = date('U'); //没登陆叫访客 登陆了就取用户名
if(!$_SESSOIN['se_name']){ $username = '访客'; }else{ $username = $_SESSION['se_name']; } //把登陆信息写到数据库里面
$query = "insert into online set name='$username',date='$times',adminid='0'"; $result = $db_id->query($query); //没成功返回false
if(!$result){
return false; } //删除超时的用户信息 $times = $times - 300;
$query = "delete from online where date<'$times'"; $result = $db_id->query($query); if(!$result){ return false; }
//读取数据库里面的name
$query = "select name from online "; $result = $db_id->query($query); if(!$result){ return false; }
//以数组返回用户登录列表
$rows = $result->num_rows;
$user_list['count'] = $rows; while($rows = mysqli_fetch_object($result)){ $user_list[] = $rows->name; } return $user_list; }
2.不设id,用PHPSESSID做主键
代码下载:http://www.phpnewer.com/index.php/Ymgx/detail/id/7