在线人数

方案一:

不断的采用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

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

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.'人在

你可能感兴趣的:(在线人数)