很多站长朋友们都不太清楚app在线人数php,今天小编就来给大家整理app在线人数php,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP中如何实现在线人数的统计和显示 2、 PHP如何统计在线人数 3、 php怎样统计在线人数 4、 怎么用php计算当前在线人数 PHP中如何实现在线人数的统计和显示要使用数据库,建立一个表,比如名字是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);
获取某页面在线人数的查询是语句
$limit=time()-10*60;//10分钟内访问的认为在线,10分钟*60秒/分钟
$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如何统计在线人数原理:根据不同的IP统计出当前有多少人在线。
实现方式:可以用数据库,也可以用文本。
我这里用了文本实现。
$user_online = "count.php"; // 保存人数的文件
touch ( $user_online ); // 如果没有此文件,则创建
$timeout = 30; // 30秒内没动作者,认为掉线
$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怎样统计在线人数首先,php不能直接统计在线人数,因为php只能获取用户上线的事件,没法获取用户下线的事件。
目前最靠谱的方法是,用户上线时创建一个session数据,并把这个数据保存在数据库或某个文件里,该用户每次操作都更新一次这个数据的时间。在统计人数的时候,把最后一次更新超过某个时间(比如说10分钟)的数据删除掉,剩下有多少个数据,就有多少用户在线。
不过缺点是显而易见的,比如一个用户下线了,他可能之后最多有10分钟会被计算在在线人数里,再比如一个人看一个网页的文章看了10多分钟,他就可能被排除在在线人数之外了。
总之,只能算个大概。
怎么用php计算当前在线人数计算当前在线人数--用文本实现
<?php
//首先你要有读写文件的权限
//本程序可以直接运行,第一次报错,以后就可以
$online_log = "count.dat"; //保存人数的文件,
$timeout = 30;//30秒内没动作者,认为掉线
$entries = file($online_log);
$temp = array();
for ($i=0;$i<count($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."人在线";
?>
关于app在线人数php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于app在线人数php app使用人数的详细内容...