讨论:将数据库连接保存在session中
conn.asp文件
<%
session.abandon
function opendb(DBPath,sessionname,dbsort)
dim conn
if not isobject(session(sessionname)) then
Set conn=Server.CreateObject("ADODB.Connection")
DBPath=server.MapPath("database/db.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
set session(sessionname)=conn
end if
set opendb=session(sessionname)
end function
%>
页面中的调用
<% set conn=opendb("oabusy","conn","accessdsn") %>
1.session.abandon什么用?
2.这种连接方式的优点
3.缺点
呵呵,请高手发飙
问题点数:100、回复次数:11Top
1 楼leiaming(民族英雄-江湖最后一把杀猪刀-已经穷的只剩素质)回复于 2003-12-01 18:51:42 得分 5
1、绑定session变量
3、一量session过期,就不能连接数据库
至于优点到没想过Top
2 楼monkeys(Myron.Liu)回复于 2003-12-01 18:53:41 得分 5
1.关闭注销session
2.能够连接上数据库
3.安全性能不是很好Top
3 楼rxiao(学)回复于 2003-12-01 20:21:06 得分 0
session.abandon应该是注销session变量吧
但是为什么要注销呢?
我觉得这种连接方式为了使数据库连接一直维护
安全性不好是什么意思?Top
4 楼N1rvana(新手上路)回复于 2003-12-01 20:46:51 得分 20
session.abandon是注销Session
这种连接方式。。。。看他的用意是把打开的conn放入Session,这样做的用处(或者说优点),我觉得比较有可能是:
1、在其他不包含conn.asp的页面中也可以使用这个数据库连接,也就是说,整个站点,只要首页包含了conn.asp就可以了,其他页面可以不包含;
2、在一次会话期间,也可以说某一访问者一次对网站的访问过程中(假设Session未超时),只执行一次数据库连接对象的打开,而不是像一般的做法,用户访问站内的任何一个包含数据库连接的页面都要进行一次数据库连接的动作;从而试图达到降低服务器负荷的目的。
我觉得的确有可能通过这样的做法降低对服务器的负荷,不过没试过,不敢下定论:)
至于缺点,
1、不符合常规,所以就不够直观;
2、一旦Session过期,除非再次调用conn.asp页面否则无法开启数据库连接,也就不能正常访问站点;
这是个以前没见过的思路,呵呵,我会自己去试试的:)Top
5 楼N1rvana(新手上路)回复于 2003-12-01 20:49:10 得分 0
另外,安全性倒没什么,个人意见。。Top
6 楼alexzhang00(三角猫)回复于 2003-12-01 21:03:34 得分 20
1. session.abandon 是释放所有SESSION
2. 优点:安全性好一点,在用户退出或超时后,如果用HISTORY返回,不能再执行 数据库操作
3. 缺点: 太耗服务器资源Top
7 楼rxiao(学)回复于 2003-12-01 21:11:29 得分 0
与数据库连接一直维持,会不会反而增大服务器的负荷
如果把连接写入session里,会不会反而占用了更多的服务器资源(session)
好像可以用这种方法实现认证,而不必再特别的设置一个session来保存用户登陆信息
继续讨论Top
8 楼zl9732(zl9732)回复于 2003-12-01 22:01:18 得分 10
1、注销session变量
2、方便了点(个人认为)
3、太耗服务器资源、随时可能丢失这个session
Top
9 楼bamboo2000(龙的传人)回复于 2003-12-01 23:34:50 得分 25
Session本身就占资源,其中再放个很占资源的Connection,太不好了吧,如果做一个网上办公系统,就几个人用的话,可以考虑,如果做一个供多人访问的站点的话,可能服务器提供商会跟你……Top
10 楼inelm(木野狐)回复于 2003-12-02 00:09:41 得分 10
强烈推荐你看一看这篇文章:
Why Caching A DataBase Connection Is A Bad Idea
http://www.codeproject.com/asp/dbobjects.asp
// ------------------
// Archimond 阿克蒙德
Top
11 楼cueixu1(紫之龙)回复于 2003-12-02 00:32:21 得分 5
强烈建议不要这么做~Top




