使用PHP和Ajax实现实时更新在线人数和累计观看人数

本文将介绍如何使用PHP和Ajax技术实现一个简单的实时更新在线人数和累计观看人数的功能,无需刷新网页。

1. PHP代码

首先,我们需要编写PHP代码来处理数据和更新数据文件。以下是一个示例代码:

<?php
function sxcs(){
    $list = file_get_contents('sxcs.dat');
    $myfile = fopen('sxcs.dat', 'w');
    $sxcs = ($list+1);
    fwrite($myfile,'$sxcs');
    fclose($myfile);
    return $sxcs;
}

function slzxrs(){
    // 首先你要有读写文件的权限,首次访问肯不显示,正常情况刷新即可
    $online_log = 'slzxrs.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].'
'); //取出其他浏览者的信息,并去掉超时者,保存进$temp
        }
    }
    array_push($temp,getenv('REMOTE_ADDR').','.(time() + ($timeout)).'
'); //更新浏览者的时间
    $slzxrs = 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);
    // 返回当前在线人数和累计观看人数
    return array(
        'onlineCount' => $slzxrs,
        'totalCount' => sxcs()
    );
}

// 调用slzxrs函数获取最新的数据
echo json_encode(slzxrs());
?>

2. HTML代码

接下来,我们需要编写HTML代码来显示在线人数和累计观看人数,并使用Ajax进行实时更新。以下是一个示例代码:

<!DOCTYPE html>
<html>
<head>
    <title>实时更新在线人数和累计观看人数</title>
    <script src='https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js'></script>
</head>
<body>
    <h6><center><p>当前在线:<span id='online-count'><?php echo slzxrs(); ?></span> 人_ 累计观看人数:<span id='total-count'><?php echo sxcs(); ?></span> 人</p></center></h6>
    <script>
        // 每5秒更新一次数据
        setInterval(function() {
            $.ajax({
                url: 'update.php', // 更新数据的PHP文件路径
                type: 'GET',
                dataType: 'json',
                success: function(data) {
                    // 更新当前在线人数和累计观看人数
                    $('#online-count').text(data.onlineCount);
                    $('#total-count').text(data.totalCount);
                }
            });
        }, 5000);
    </script>
</body>
</html>

3. 说明

  • PHP代码中,sxcs() 函数用于获取并更新累计观看人数,slzxrs() 函数用于获取并更新当前在线人数。
  • slzxrs() 函数使用getenv('REMOTE_ADDR') 获取用户IP地址,并将其保存到slzxrs.dat 文件中,用于记录用户访问时间。
  • HTML代码中,使用setInterval() 函数每隔5秒向update.php 文件发送请求,获取最新的数据。
  • update.php 文件是处理更新数据的请求的PHP文件,它调用slzxrs() 函数获取最新数据,并将数据以JSON格式返回给客户端。
  • 客户端使用jQuery的ajax() 函数获取数据,并更新页面中的在线人数和累计观看人数。

4. 注意事项

  • 确保PHP代码具有读写sxcs.datslzxrs.dat 文件的权限。
  • 可以根据实际情况调整更新数据的频率(setInterval() 函数的第二个参数)。
  • 使用flock() 函数来避免多个进程同时写入文件导致数据错误。

总结

通过使用PHP和Ajax技术,我们可以很方便地实现一个简单的实时更新在线人数和累计观看人数的功能,无需刷新网页。这对于网站流量统计和用户体验都有着重要的意义。

PHP实时更新在线人数和累计观看人数

原文地址: https://www.cveoy.top/t/topic/npTT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录