主页 > PHP | WEB开发 > 实现网站在线人数的统计

实现网站在线人数的统计

2010 年 12 月 03 日 2条评论

在某些特殊的网站上需要对网站浏览的情况进行一个统计,这个当然包括在线人数的统计,下面就来说说网站在线人数的统计功能的实现!
我们首先要建立一个数据表表结构的代码如下:

CREATE TABLE IF NOT EXISTS `session` (
  `s_id` int(32) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户session的id',
  `s_uid` int(32) unsigned NOT NULL COMMENT '对应用户的uid',
  `s_sessionid` char(30) NOT NULL COMMENT '存放用户登录产生的session_id()',
  `s_login_ip` char(15) NOT NULL COMMENT '登录的ip',
  `s_login_time` int(16) unsigned NOT NULL COMMENT '登录的时间',
  PRIMARY KEY (`s_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=26 ;

这就是一个数据表的结构。下面我们来看下主要的脚本代码:
统计在线人数的函数:

//记录在线人数的函数,在网站首页调用该函数即可
	function fun_online($table,$mysql,$stay_time){
		$session   = session_id();
		$time      = time();
		$ip        = fun_getip();	
		$time_check= $time - $stay_time;					//设置时间10分钟=10*60秒  ,$time_check用于检测是否超时
		$sql       = "select * from `".$table."` where `s_sessionid` = '".$session."';";
		$count     = count($mysql->get_all($sql));
		if($count == "0"){
			$sql   = "INSERT INTO `".$table."`(`s_uid`,`s_sessionid`,`s_login_ip`,`s_login_time`)VALUES('".$_COOKIE['uid']."','".$session."','".$ip."','".$time."');";
			$result = $mysql->query($sql);		//执行插入
		}else{
			$sql    = "UPDATE `".$table."` SET `s_login_time` = '".$time."',`s_login_ip` = '".$ip."' WHERE `s_sessionid` = '".$session."';";
			$result = $mysql->query($sql);		//如果存在则修改连接时间
		}
		$sql    = "select * from `".$table."`;";
		$count_online = count($mysql->get_all($sql));
		$sql4   = "DELETE FROM `".$table."` WHERE `s_login_time` < ".$time_check.";";	//在session表中删除超时的用户登陆信息
		$result = $mysql->query($sql4);
		return $count_online;
	}

说明下:这里的参数$table是指表名 这里就是session了,这个表名自己可以随便命名,第二个参数是一个数据的操作的对象,第三个参数是设置有效时间的!这个函数中用到的一些对象的方法都是操作数据库的,比较简单,这里就不写了!
判断某位会员是否在线的函数:

//判断具体的某一个用户是否在线的函数
	function fun_is_online($uid,$table,$mysql){
		$sql = "select * from `".$table."` where `s_uid` = '".$uid."';";
		$res = $mysql->get_all($sql);
		if(empty($res)){
			return "0";				//返回0代表该uid代表的用户不在线
		}else{
			return "1";				//返回1代表该uid代表的用户在线
		}
	}

说明下:这里的参数$uid是指某位用户唯一标识符uid,这个可以通过登录获取,第二个和第三个参数和上面的函数是一样的!
接下来我们看下是怎么调用的!我们在网站的入口文件这么写:

if(isset($_COOKIE['uid'])){
		fun_online("session",$mysql,"600");				//用户每次刷新页面时将时间等信息写入session表
	}

这样子就可以实现该功能了,要输出总共的在线人数是要echo一下fun_online()就行了!

Tags: PHP

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>