美文网首页
在线人数

在线人数

作者: Web陌凡 | 来源:发表于2017-10-01 12:04 被阅读0次

    方案一:

    不断的采用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.'人在

    相关文章

      网友评论

          本文标题:在线人数

          本文链接:https://www.haomeiwen.com/subject/zvpoextx.html