用PHP写一个功能把下面代码的当前在线人数和累次观看人数写成实时更新数据的只在本页面实现不要刷新网页! phpfunction sxcs$list = file_get_contentssxcsdat;$myfile = fopensxcsdat w;$sxcs = $list+1;fwrite$myfile$sxcs;fclose$myfile;return $sxcs;function
可以使用Ajax技术实现实时更新数据,具体实现步骤如下:
- 在页面中引入jQuery库,例如:
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></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);
- 在服务器端编写一个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]."\n"); //取出其他浏览者的信息,并去掉超时者,保存进$temp
}
}
array_push($temp,getenv('REMOTE_ADDR').",".(time() + ($timeout))."\n"); //更新浏览者的时间
$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());
?>
- 在页面中添加显示当前在线人数和累计观看人数的标签,例如:
<h6><center><p>当前在线:<span id="online-count"><?php echo slzxrs(); ?></span> 人_ 累计观看人数:<span id="total-count"><?php echo sxcs(); ?></span> 人</p></center></h6>
原文地址: https://www.cveoy.top/t/topic/b8cR 著作权归作者所有。请勿转载和采集!