PHP实时更新在线人数和累计观看人数
使用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.dat和slzxrs.dat文件的权限。 - 可以根据实际情况调整更新数据的频率(
setInterval()函数的第二个参数)。 - 使用
flock()函数来避免多个进程同时写入文件导致数据错误。
总结
通过使用PHP和Ajax技术,我们可以很方便地实现一个简单的实时更新在线人数和累计观看人数的功能,无需刷新网页。这对于网站流量统计和用户体验都有着重要的意义。
原文地址: https://www.cveoy.top/t/topic/npTT 著作权归作者所有。请勿转载和采集!