如何在ASP实现网站在线人数,当前访问人数的统计,并可把数值写入数据库和可从数据库(SQL)读取 80

要求能正常实现网站在线人数访问总人数,当前在线人数,可以把数据写入到数据库中保存,即每增加一个在线人数就往数据库写读取数据,然后再把数据写入数据库。因为原来用global... 要求能正常实现网站在线人数访问总人数,当前在线人数,可以把数据写入到数据库中保存,即每增加一个在线人数就往数据库写读取数据,然后再把数据写入数据库。

因为原来用global.asa写那个统计人数的代码在实现这个功能时,经常会出现统计人数归零的情况。
我也试过把把数据写入数据库,不过在查看数据库跟踪的详细列表时,发现在整个会话期间,只从数据库读出一次Application的值,当有新页面打开的时候数据没有改变。

这是我以前用来统计的Global.asa代码(数据库连接那部分我去掉了):

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
//连接数据库
ConnStr="Provider=SQLOLEDB.1;Persist Security InFso=true;Data Source=.;Initial Catalog=;User ID=;Password="
'Catalog=;User ID=;Password= 因为是问题,已去掉
Set conn = Server.CreateObject("ADODB.Connection")
conn.commandtimeout=20
conn.open ConnStr
conn.execute("update [CountS] set [id]=[id]+1;")
Application.Lock '在这里读出Application("CountAll")的初始值
'这里设置过初值的,但是还是出现上面的问题
'要求在这里实现数据库的连接,从数据库读出上次访问的总人数
Application.UnLock
End Sub

Sub Session_OnStart
session.Timeout=20
Application.Lock
Application("Online") = Application("Online") + 1
Application("CountAll") = Application("CountAll") + 1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application("Online") = Application("Online") - 1
Application.UnLock
End Sub

Sub Application_OnEnd
Application.Lock
'应该在这里将Application("CountAll")保存到文件中,要求是写入数据库
Application.UnLock
End Sub
</SCRIPT>

谁能帮我优化上面的代码,功能要求如上面所说的,要求给出详细的说明。不要一般网上找的,很多我已经看过了,不实用。如果哪位能帮我解决这个问题,再追加高分奖励。
展开
 我来答
冯益斌
2008-08-15 · TA获得超过1019个赞
知道小有建树答主
回答量:869
采纳率:100%
帮助的人:1003万
展开全部
既然已经用了数据库,那为什么还要用
Application呢?

把那段执行update语句的代码放在你的网站首页上就行了。

另外,即使你一定要用Application,也不能在Application_OnStart中去计数,而应该在Session_OnStart中取计数,因为你不知到Application_OnEnd 事件 (web 服务器停止运行)什么时候发生。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式