社区
其他
帖子详情
谁能讲一下在线名单的原理?》??
lio_sy
2003-09-14 02:21:42
谢谢啊
...全文
27
1
打赏
收藏
谁能讲一下在线名单的原理?》??
谢谢啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lions911
2003-09-14
打赏
举报
回复
很多网友都问如何制作社区的在线人员显示问题,这也是个老大难的问题。由于笔者已经学习和实践了这些方面的编程已经有很长一段时间了。不说是有技术,也算是有些经验了,在这些问题解决方面我也曾遇到比较多的问题,后来总是解决了。
这次和大家讲的不关是一个程序的代码实现,而更重要的就是一个原理和思想问题,因为如何大家都知道这个该如何去做的话,就不存在技术上的难题了,而只是一个语法上的不熟罢了。
其实判断用户是否登录很简单,只要在登录的程序加上 "把用户设为在线" 就行了,这可以用SQL的update来做也可以用其他的如对文本文件的追加来做。如何登录时是设置的可以COOIKE登录的话,你只要在浏览页面或是发表贴子等的页面,进行更新也可以。
其实网友认为难的就在于如何知道用户已经离开社区了。下面有几个初学网友会犯的错误。
错误方法一: 当然有的网友会做在社区里做个 "退出社区" 可有的用户比较忙或是手比较快,就会直接的关闭浏览器了。那么在程序看来此用户根本就没有退出社区。
错误方法二: 为了这样也有的网友以关闭浏览器为标准,例如每当用户直接关闭浏览页面时,用JavaScript执行一个unload事件,跳出一个窗口,来执行相就在的更新,这也许是解决直接关闭的问题。可是网友没有考虑到如果因为贴子或文章太长,用户想断了线后,再好好的看看,那么他正好是直接断线后,看完所有贴子或文章再关闭浏览器的呢。此时跳出窗口页面的程序就等于没有执行。
错误方法三:使用session为例,一般的服务器中都有Session的失效时间,如IIS中为20分钟,有的网友以Session为标准,来判断,这显然也是行不通的,结果会和错误方法二一样。
那么如果才是正确的方法呢。到现在为此还没有一种方便的和精确的方法,除非你用Job事务来做,当那几乎是不可能的,因为免费的,即使是收费的主页空间也不会让你这么做的。所以只能能过普通的命令来实现了。
不过它的局限性就在于不能精确,但是我们可以让他更加的接近于精确。
下面我们会以IIS环境下的SQL SERVER服务器为例子。其他的如PHP+MYSQL,JSP+MS SQL SERVER等举一反三,几乎语句都不用怎么变。
例子中采用程序片段,例如用户在表users中,除了基本要有的用户名字段(name)等,要有online字段,可以用bit类型就可以了。还要有一个登录时间的字段logintime,和最后操作时间的字段logouttime,都为datetime类型。详细的作用我们会在后面谈到。
首先在用户登录进入时,要生成一个Session("name")字段的值,或是cookies("club")("name")的值,以便于在进行操作时,让SQL在社区中任意页面都知道是哪个用户的记录。接着更新用户的下online字段和logintime字段,语句如下:
conn.execute("Update users set online=1,logintime='"&now&"' where name='"&session("name")&"'")
这条语句的作用在于当用户登录时,就把用户在线设为真,再把当前操作时间设为现在。其次在用户进行贴子或文章浏览时,也要用此语句,因为这样才可能更加的准确些。
在这些语句的后面再加上一句。
conn.execute("Update users set online=0 where diffdate(""n"",logintime,'"&now()&"')>10")
这条语句的作用表示把用户最后操作时间和当前时间相比较,如果大于10分钟的话,就会把这些用户都设为离线。
好了,其实关键的也就是这两条语句而以,是不是很简单?说了这么多,其实想让大家了解的就是实现的原理,而不是什么代码。相信大家现在也可以很简单的做出关于PHP+MYSQL和JSP+数据库的在线人员显示的程序来了。
最后可以用"select name from users where online=1"来调用在线的用户了,然后显示出来当然也没问题了。呵。。。
也许有的朋友会有更好的方法,欢迎发表出来和大家共同进步吧。如果有什么问题的话,也可以来我的社区里讨论讨论吧。http://luyu.net
QT核心模块(core)
原理
与源码分析视频课程
课程
讲
解形式有什么特点?技术概念+存储结构+函数源码图示
讲
解+源码
讲
解+静态分析+动态调试有助于学员快速深入掌握QT5核心模块的基础
原理
动静结合更有利于学员快速掌握QT5框架核心模块技术通过这个课程能够学到什么?QT对象树
原理
与源码分析QT可变类型
原理
与源码分析QT属性系统
原理
与源码分析QT事件系统
原理
与源码分析QT内存管理
原理
与源码分析QT信号与槽
原理
与源码分析QT元对象系统
原理
与源码分析QT元类型系统
原理
与源码分析
知道DDoS攻击吗?大概
讲
讲
它的
原理
最近几次面试,喜欢问一个问题:知道DDoS攻击吗?
讲
讲
它的
原理
。大概说的比较明白不到1/3。 其实,像全球互联网各大公司,均遭受过大量的DDoS。 2018年,GitHub 在一瞬间遭到高达 1.35Tbps 的带宽攻击。这次 DDoS 攻击几乎可以堪称是互联网有史以来规模最大、威力最大的 DDoS 攻击了。在 GitHub 遭到攻击后,仅仅一周后,DDoS 攻击又开始对 Google、亚马逊甚至...
面试官问:知道DDoS攻击吗?大概
讲
讲
它的
原理
目录 那 DDoS 攻击究竟是什么? 下面给一个更加形象点的例子,解释下DDoS攻击。 下面是SYN Flood进行DDoS攻击的实现
原理
如何应对 DDoS 攻击? 高防服务器 黑
名单
DDoS 清洗 CDN 加速 最近几次面试,喜欢问一个问题:知道DDoS攻击吗?
讲
讲
它的
原理
。大概说的比较明白不到1/3。 其实,像全球互联网各大公司,均遭受过大量的DDoS。 2018年,...
物联网卡联网
原理
是什么?为什么有时无法使用?
随着物联网卡技术的快速发展,物联网也成为了我们生活中的一部分,在外出商城购物时,我们可以看到各类无人自助抓娃娃机,在火车站、地铁、高铁站时我们可以看到无人自动售货机,在路途上我们可以乘坐嵌有物联卡的共享单车,那么移动物联卡、电信物联卡、联通物联卡是怎么联网的?物联卡联网的
原理
是怎么样?为什么有时候物联卡不能用? 随着物联网技术的持续火爆,作为物联网技术中的关键一部分物联网卡也受到了更多的关注...
手机没网了,却还能支付,这是什么
原理
?
往期热门文章:1、《往期精选优秀博文都在这里了!》2、记一次订单号重复的事故,快看看你的 UUID 在并发下还正确吗?3、终于放弃了Maven,我选择用Gradle!4、Kotlin 越...
其他
10,606
社区成员
29,048
社区内容
发帖
与我相关
我的任务
其他
Web 开发 其他
复制链接
扫一扫
分享
社区描述
Web 开发 其他
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章