PHP 实时更新在线人数和累计观看人数
<p>以下是实时更新在线人数和累计观看人数的PHP代码:/n/n```php/n<?php/n//设置定时器,每3秒钟刷新一次/nheader(/'refresh:3/');/n/nfunction sxcs(){/n /$list = file_get_contents('sxcs.dat');/n /$myfile = fopen(/'sxcs.dat/', /'w/');/n /$sxcs = (/$list+1);/n fwrite(/$myfile,/'/$sxcs/');/n fclose(/$myfile);/n return /$sxcs;/n}/n/nfunction slzxrs(){/n /$online_log = /'slzxrs.dat/';/n /$timeout = 30;/n /$entries = file(/$online_log);/n /$temp = array();/n for (/$i=0; /$i<count(/$entries); /$i++){/n /$entry = explode(',', trim(/$entries[/$i]));/n if((/$entry[0] != getenv('REMOTE_ADDR')) && (/$entry[1] > time())) {/n array_push(/$temp, /$entry[0]./',/'./$entry[1]./'//n/');/n }/n }/n array_push(/$temp, getenv('REMOTE_ADDR')./',/'.(time() + (/$timeout))./'//n/');/n /$slzxrs = count(/$temp);/n /$entries = implode(/'/', /$temp);/n /$fp = fopen(/$online_log, /'w/');/n flock(/$fp, LOCK_EX);/n fputs(/$fp, /$entries);/n flock(/$fp, LOCK_UN);/n fclose(/$fp);/n return /$slzxrs;/n}/n/n//获取当前在线人数和累计观看人数/n/$onlineNum = slzxrs();/n/$totalNum = sxcs();/n/n//将数据写入json文件/n/$data = array('onlineNum' => /$onlineNum, 'totalNum' => /$totalNum);/n/$jsonStr = json_encode(/$data);/n/$file = fopen('data.json', 'w');/nfwrite(/$file, /$jsonStr);/nfclose(/$file);/n/n?>/n/n<!--在页面上通过ajax实时获取数据-->/n<h6><center><p>当前在线:<span id=/'onlineNum/'></span> 人_ 累计观看人数:<span id=/'totalNum/'></span> 人</p></center></h6>/n/n<script>/n //使用ajax实时获取json文件中的数据/n setInterval(function(){/n var xmlhttp = new XMLHttpRequest();/n xmlhttp.onreadystatechange = function() {/n if (this.readyState == 4 && this.status == 200) {/n var data = JSON.parse(this.responseText);/n document.getElementById(/'onlineNum/').innerHTML = data.onlineNum;/n document.getElementById(/'totalNum/').innerHTML = data.totalNum;/n }/n };/n xmlhttp.open(/'GET/', /'data.json/', true);/n xmlhttp.send();/n }, 3000);/n</script>/n/n代码说明:/n/n1. <code>sxcs()</code> 函数用于记录累计观看人数,每次访问页面都会将人数加1,并存储在 <code>sxcs.dat</code> 文件中。/n2. <code>slzxrs()</code> 函数用于计算当前在线人数,通过记录每个用户访问时间和IP地址,并设置超时时间(30秒),如果超过超时时间则认为用户掉线。/n3. 将当前在线人数和累计观看人数存储在 <code>data.json</code> 文件中,并使用 <code>setInterval()</code> 函数每隔3秒钟使用 AJAX 获取 <code>data.json</code> 文件中的数据,并更新页面上的数据显示。/n/n注意:/n/n1. <code>sxcs.dat</code> 和 <code>slzxrs.dat</code> 文件需要在服务器上创建,并具有读写权限。/n2. <code>flock()</code> 函数用于在多线程环境中对文件进行加锁,防止数据冲突。/n3. <code>header(/'refresh:3/');</code> 用于设置页面刷新时间,每3秒钟自动刷新页面。/n4. AJAX 请求的 URL 为 <code>data.json</code>,你需要确保 <code>data.json</code> 文件的路径正确。/n/n代码实现了实时更新在线人数和累计观看人数的功能,你可以根据自己的需要进行调整。/n/n',</p>
原文地址: https://www.cveoy.top/t/topic/npTR 著作权归作者所有。请勿转载和采集!