社区
基础编程
帖子详情
怎么实现在线名单的功能啊?
妖帅
2002-01-11 07:49:28
最近在写一个社区,但在线名单的功能一直不知道该怎么实现
谁有这方面的代码,能给我一份吗?aoguan@aoguan.com
社区地址 http://i-hs.51.net/newbbs
...全文
167
10
打赏
收藏
怎么实现在线名单的功能啊?
最近在写一个社区,但在线名单的功能一直不知道该怎么实现 谁有这方面的代码,能给我一份吗?aoguan@aoguan.com 社区地址 http://i-hs.51.net/newbbs
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
妖帅
2002-01-15
打赏
举报
回复
呵呵~~难道你还有好的办法解决吗?
conyx
2002-01-14
打赏
举报
回复
太耗资源了吧,兄弟
lovejsp
2002-01-13
打赏
举报
回复
if(!isset($session_value))
{
执行....
}
欢迎来http://www.luyu.org讨论. :)
gudianboy
2002-01-13
打赏
举报
回复
是要动态显示在线名单吗?
那建一个在线用户数据库如: online
然后在登录的那个页面,在用户登录时,就可以将用户名写入这个在线数据库,
到现在,你就是在你想要的显示在线用户的名单的那个页面调用这个在线数据库的数据了,ok! 不知道我讲的清楚吗? 见笑.......
妖帅
2002-01-13
打赏
举报
回复
几天没来,没想到这里回复这么多了啊:)问题我自己已经解决了,就是建了个表从登陆就开始记录,然后每一步动作都记录,呵呵~谢谢大家了:)
sh0cker
2002-01-13
打赏
举报
回复
改你篇文章,希望对你有帮助
用PHP实现网站在线人数统计
现在很多网站或者论坛都有在线人数统计这个功能,管理员看着自己网站的在线人数不断增多,别有一番风味。那么这些在线人数统计是怎么做出来的呢?
要实现在线统计,有两种方法。
第一种是使用一个Socket和请求者连接,直到请求者的Socket断开,就把数据库中的记录删除,然而这种方法过于复杂。
现在的网页都是基于HTTP协议,HTTP协议连接的生命期从请求者发出请求到HTTP回话结束完毕,也就是如果页面读取完毕,连接就关闭了。而第二种方法就是计算在某段时间之内的请求数目。
知道了这个请求的数目,又怎么确定在线人数呢?我们在数据库中记录下此IP上次访问的时间,然后在统计在线人数的时候,如果某IP上次访问时间和当前时间的差值小于某个值的时候,就认为本用户仍然在线。而这个时间差值可以是5分钟,可以是15分钟,甚至可以是1个小时,要视不同网站而定。
记录IP对应的访问时间,这里使用文本数据库,结构如下:
IP地址 | 请求的URI | 最后请求的时间戳
为什么要使用文本记录而不使用类似MySQL的SQL数据库呢?记录数据有方法,一是即使请求者已经被判定“不在线”,仍然在数据库中保留请求者的记录,但是这样子数据库的大小会像雪球一样越来越大,最终数据库不堪重负。第二种是当请求者被判定“不在线”的时候就将其所对应的记录删除,然而这样子就要频繁的写数据库,会造成数据库文件的分段,文本文件在这种情况下效率不会低于SQL数据库,甚至超过SQL数据库。
下面就是统计在线人数的程序:
--------程序间后-----------
如果在其他页面需要调用在线人数统计,只要在页面上面加入一句:
<script src=在线统计程序的URL></script>
就可以了。
以上程序在Windows2000 Professional+Apache1.3.19+PHP 4.05和RedhatLinux7+Apache1.3.12+PHP4.04两个平台中测试通过,当文本文件中有10000条记录时,遍历时间耗时0.4秒。
code:--------------------------------------------------------------------------------<?
$datafile = 'online.dat'; // 数据文件,如果是linux/unix系统,需要把文件属性设置为777或者666
$onlineTime = 300; // 在线的时间差秒数,这里设置为5分钟
$timestamp = time(); // 取得当前的Unix时间戳
$dat = file($datafile); // 将数据文件读入数组
$count = count($dat); // 取得当前的数据记录数目
$onlineCount = 1; // 在线人数,起始就是1,当前的请求者自己
$insertMe = true; // 判断是否要插入当前请求者的记录,如果当前数据中没有此IP的记录就加入
for($i = 0; $i < $count; $i++) {
$dat[$i] = chop($dat[$i]); // 去处记录尾部的\n
list($ipadd, $requestUri, $lastRequest) = explode('|', $dat[$i]); // 取得数据
if($ipadd == $REMOTE_ADDR) { // 如果IP和当前请求者的IP一致,就更新Unix时间戳
$dat[$i] = $ipadd.'|'.$requestUri.'|'.$timestamp."\n";
$insertMe = false;
} else {
// 如果IP和当前请求者IP不一致,那么判断是否在线
if($lastRequest < ($timestamp - $onlineTime)) {
// 不在线,删除本条数据记录
$dat[$i] = '';
} else {
// 在线,加上尾部的\n
$dat[$i] .= "\n";
$onlineCount++; // 在线人数加1
}
}
}
// 用JavaScript输出结果
print <<< EOF
document.write("在线人数:$onlineCount");
EOF;
// 将新的数据整合成为字符串
$newDat = join('', $dat);
if($insertMe) {
// 判断是否需要加入当前请求者的记录
$newDat .= $REMOTE_ADDR.'|'.$REQUEST_URI.'|'.$timestamp."\n";
}
// 写入数据文件
$fp = fopen($datafile, 'w');
fwrite($fp, $newDat);
fclose($fp);
?>
Soft21
2002-01-13
打赏
举报
回复
大家好啊,我嘛,这里还是有高手的嘛
bombshell
2002-01-12
打赏
举报
回复
用session
dogun
2002-01-12
打赏
举报
回复
顺便问一句,怎么能让session过期时调用一个函数来执行一些东西,就象ASP一样?
hbcool
2002-01-11
打赏
举报
回复
我也想知道......
Spring Boot进阶(42):如何
实现
图片
在线
下载?
如何
实现
图片
在线
下载?一文教会你。
Spring Boot进阶(41):如何
实现
图片
在线
预览?
如何
实现
图片的
在线
预览?一文教会你。
智能多线弹性云增加独立的IP地址,如何
实现
多线
功能
?
默认西部数码云服务器增加的独立IP地址只有单独电信线路,需通过第三方的解析
实现
多线
功能
。 一、比如域名test.com,首先在dnspod申请这个域名dns解析,然后吧此域名dns改成dnspod的; 二、然后针对每个增加的...
如何在NGINX中
实现
基于IP的访问控制(IP黑白
名单
)?
如何在NGINX中
实现
基于IP的访问控制(IP黑白
名单
)?
PHP中的文件上传
功能
如何
实现
?
在PHP中
实现
文件上传
功能
,通常需要以下几个步骤:创建表单:首先,需要创建一个HTML表单,允许用户选择并上传文件。这个表单的属性应设置为,并且使用POST方法提交数据。配置PHP:确保PHP配置允许文件上传。这可以...
基础编程
21,891
社区成员
140,342
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章