本文目录一览:
怎么用php写个在线访问人数统计
你所说的“其中一个人关闭了网站”是一个很明显的错误,网站的来访者所关闭的不是“网站”,只是他自己的浏览器。
从 Web 服务的机制上来说,服务器只是接收到对某个网页的请求后把相应的 HTML 格式的内容(可能包括 JavaScript程序)发送给请求者以后就关闭连接,至于浏览器端的用户是什么时候关闭浏览器(或者说是转移去查看别的网站的网页去了)服务器端是得不到任何信息的。
PHP、ASP、JSP 之类的网页访问只是服务器在发送 HTML 格式的内容之前需要先执行一下相应的文件里的程序,得到 HTML 格式的内容之后再发送而已,原理上还是发送完就关闭与请求者的连接。
服务器能得到的信息是接收来访者发来的网页请求信息的时候随同而来的IP地址,至于这个IP地址对应的用户什么时候跳转去看别的网站的网页去了服务器得不到任何信息。在你的 PHP 程序中,可以把得到一个来访者的IP地址的时候就给作为一个累加器用的跨网页文件跨不同来访者共享的变量添加1,20分钟之内没再接收到那个IP地址发来的请求就将累加器减1,这样,你把那个累加器内容显示出来就能反映你的网站在最近20分钟内有多少个IP来访问过,这个数就近似地反映了你的网站“在线人数”。
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怎么实现呢
if(isset($_COOKIE['online_users']))
{
$online_users = $_COOKIE['online_users'];
}else{
$online_users = rand(500,1000);
setcookie('online_users',$online_users,time()+300);
}
echo $online_users;
这个需求用cookie其实很好处理,然后五分钟改变一次就完了