要使用数据库,建立一个表,比如名字是online,至少有以下列:
name_ip 存放登录用户名,未登录的存放IP,char类型
url 存放每个页面的地址,char类型
last_time 存放刷新页面的最后时间,int类型
表的主键是:name_ip◆url
每个页面一开始就要刷新这个表,使用的SQL是:
$name_ip='用户名或者IP';//你能搞定
$url=$_SERVER["PHP_SELF"];
$time=time();
$sql="replace delayed into online (name_ip,url,last_time) values ('$name_ip','$url',$time)";
mysql_query($sql);
获取某页面在线人数的查询是语句
$sql="select count(*) from online where url='$url' and last_time=$limit";
$res=mysql_query($sql);
list($online_count)=mysql_fetch_row($res);
mysql_free_result($res);
echo "本页面在线人数: $online_count";
计算当前在线人数--用文本实现
php
//首先你要有读写文件的权限
//本程序可以直接运行,第一次报错,以后就可以
$online_log = "count.dat"; //保存人数的文件,
$entries = file($online_log);
$temp = array();
for ($i=0;$icount($entries);$i◆◆) {
$entry = explode(",",trim($entries[$i]));
if (($entry[0] != getenv('REMOTE_ADDR')) ($entry[1] time())) {
array_push($temp,$entry[0].",".$entry[1]."\n"); //取出其他浏览者的信息,并去掉超时者,保存进$temp
}
array_push($temp,getenv('REMOTE_ADDR').",".(time() ◆ ($timeout))."\n"); //更新浏览者的时间
$users_online = count($temp); //计算在线人数
$entries = implode("",$temp);
//写入文件
$fp = fopen($online_log,"w");
flock($fp,LOCK_EX); //flock() 不能在NFS以及其他的一些网络文件系统中正常工作
fputs($fp,$entries);
flock($fp,LOCK_UN);
fclose($fp);
echo "当前有".$users_online."人在线";
原理:根据不同的IP统计出当前有多少人在线.
实现方式:可以用数据库,也可以用文本.
我这里用了文本实现.
$user_online?=?"count.php";?//?保存人数的文件
touch?(?$user_online?);?//?如果没有此文件,则创建
$user_arr?=?file_get_contents?(?$user_online?);
$user_arr?=?explode?(?'#',?rtrim?(?$user_arr,?'#'?)?);
print_r?(?$user_arr?);
$temp?=?array?();
foreach?(?$user_arr?as?$value?)?{
$user?=?explode?(?",",?trim?(?$value?)?);
if?(($user?[0]?!=?getenv?(?'REMOTE_ADDR'?))?($user?[1]?time?()))?{?//?如果不是本用户IP并时间没有超时则放入到数组中
array_push?(?$temp,?$user?[0]?.?","?.?$user?[1]?);
array_push?(?$temp,?getenv?(?'REMOTE_ADDR'?)?.?","?.?(time?()?◆?($timeout))?.?'#'?);?//?保存本用户的信息
$user_arr?=?implode?(?"#",?$temp?);
//?写入文件
$fp?=?fopen?(?$user_online,?"w"?);
flock?(?$fp,?LOCK_EX?);?//?flock()?不能在NFS以及其他的一些网络文件系统中正常工作
fputs?(?$fp,?$user_arr?);
flock?(?$fp,?LOCK_UN?);
fclose?(?$fp?);
echo?"当前有"?.?count?(?$temp?)?.?"人在线";
以上就是土嘎嘎小编为大家整理的php在线人数统计相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!