方案一:
不断的采用ajax请求服务器的文件获取数据,js无刷新更新模板数据。显示真实数据
var count_person = function (){
$.post('http://www.****.com/xxx.php?',{join:'jointal'},function(data) {
$('#shownum').html(data);
},'json');
}
setInterval('count_person()',3000);
PHP统计当前在线人数
一、开发环境
1、Windows+Apache+MySQL+PHP的环境。
2、文本编辑器:Sublime。
二、主要技术
PHP
三、具体步骤
本文主要是通过IP来区分不同的访问用户,然后将用户信息保存在txt文本中来实现统计当前在线人数的功能。
3.1、创建php文件
创建一个名为“countOnline.php”的PHP文件用来实现统计当前在线人数的功能。
3.2、统计在线人数功能代码
(1)定义保存用户信息的文本
$user_online="count.txt"; //保存在线用户信息的文件
touch($user_online); // 若无此文件则创建
(2)定义超时时间
$timeout=30; // 30秒内没动作,认为掉线
(3)文件内容读取
$user_arr=file_get_contents($user_online);// 将文件内容赋予一个字符串
$user_arr=explode("#",rtrim($user_arr,'#'));//将字符串分割为数组
(4)获取远程在线用户信息
$temp=array(); // 放置所有用户信息
foreach($user_arras $value){
$user=explode(",",trim($value));
// 如果不是本机IP,并且时间没有超过,则放入数组temp中
// getenv('REMOTE_ADDR')是获取远程IP地址(在IIS下无效果),$_SERVER['REMOTE_ADDR']也可以获取IP地址。
if(($user[0]!=getenv('REMOTE_ADDR'))&&($user[1]>time())){
array_push($temp,$user[0].",",$user[1]);
}
}
(5)保存本用户的信息
array_push($temp,getenv('REMOTE_ADDR').",".(time()+($timeout)).'#');
$user_arr=implode("#",$temp);
(6)以更新的形式打开文件
$fp=fopen($user_online,"w");
(7)对文件进行写入
flock($fp,LOCK_EX);// 锁定文件(保证同时只有一个用户在对文件进行写入操作)
fputs($fp,$user_arr); // 写入文件
flock($fp,LOCK_UN); // 释放锁定
fclose($fp); // 关闭文件
(8)输出当前在线人数至页面
echo"当前有".count($temp)."人在线"; // 输出当前在线人数
CSDN博客
img pchynaonao
php获取当前在线人数的方法
发表于2013/12/30 16:57:14 316人阅读
下面分享一种利用php实现简单的计算当前网站在线人数的方法,只是简单的通过计算访问者ip地址从而得出一个大致的结果,不能精确的计算当前在线人数,对精度要求过高的可参考本站文章:
php统计在线人数,精确的统计在线人数的办法
查看代码打印
01
<?php
02
header('Content-type: text/html; charset=utf-8');
03
//author:www.phpernote.com
04
$online_log='count.txt';//保存在线人数数据的文件,
05
$timeout=45;//45秒内没有动作,则被认识是掉线
06
$entries=file($online_log);//将文件作为一个数组返回,数组中的每个单元都是文件中相应的一行,包括换行符在内
07
$temp=array();
08
for($i=0;$i<count($entries);$i++){
09
$entry=explode(',',trim($entries[$i]));
10
if(($entry[0]!=getenv('REMOTE_ADDR'))&&($entry[1]>time())){
11
array_push($temp,$entry[0].','.$entry[1].'n');//取出其他浏览者的信息,并去掉超时者,保存进$temp
12
}
13
}
14
array_push($temp,getenv('REMOTE_ADDR').','.(time()+($timeout))."\n");//更新浏览者的时间
15
$users_online=count($temp);//计算在线人数
16
$entries=implode('',$temp);
17
//写入文件
18
$fp=fopen($online_log,'w');
19
flock($fp,LOCK_EX);//注意 flock() 不能在NFS以及其他的一些网络文件系统中正常工作
20
fputs($fp,$entries);
21
flock($fp,LOCK_UN);
22
fclose($fp);
23
echo '当前有'.$users_online.'人在
网友评论