ASP脚本响应用户表单请求时生成临时表,查询临时表进行分页显示,请问这如何应付多用户并发请求呢?

woshihuzi 2005-05-02 01:25:38
我有一个ACCESS数据库test.mdb,50M左右,里面的表wenzhang存了大约5000篇从网上搜集到的各种小说。每篇文章保存成一条记录。
我现在用IIS+ACCESS+VBscript做了一个字符串检索程序,从5000篇文章中搜索含有某个字符串的所有段落,分页显示给用户。我的做法是:
1、事先创建一个临时表,temp_duan。
2、首先用模糊检索把包含待查找字符串的记录找出来。然后对于每一条记录,取出其正文,分解成若干段,分别考察每一段,如果包含要查找的字符串,就把该段写入临时表。
3、查询表temp_duan,进行分页显示。用户翻页的时候,还是要查询临时表temp_duan。

我的问题如下:
对于单用户的请求,我的脚本在服务器上完全能够正常运转。但是,我没办法考虑多用户的并发查询请求啊。例如:
A先生查询“郭靖”,他正翻着页呢,B女士又来了请求查询“琼瑶”,那么,我的脚本该如何处理呢?我要是重写临时表temp_duan,那么,A先生翻页肯定会出错啦。我要不重写表temp_duan,那么,B女士的请求怎么响应呢?如果每次只能允许一个人同时查询,那么,我的服务器脚本就太没有水平了。建立的数据库也就没有什么实际价值了。

请高手们告诉我,如何对用户的并发查询请求进行响应呢?

...全文
227 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshihuzi 2005-07-04
  • 打赏
  • 举报
回复
BIGbeard(比戈比尔德) 老兄的办法不错,我已经改个差不多了。
谢谢所有关注此帖的人。
结帖。
zwrtv 2005-07-04
  • 打赏
  • 举报
回复
路过,学习下
BIGbeard 2005-07-04
  • 打赏
  • 举报
回复
我最近刚好做一个类似的项目,你不用建临时表了。

你可以在相应的表当中建一个字段“用户名”,当用户(比如说“张三”)登录成功之后,你设置Session(:"UserName")="张三",然后张三的所有SQL操作,你都在后面加上一个条件:"where [用户名]='" & Session("UserName") & "'",这样,每个用户查询查询自己的,清空数据,也只能清空自己的,这就没问题啦。当然,你在更新数据的时候,注意不要让多人同时更新数据就可以了。

你可以试一下。
woshihuzi 2005-05-10
  • 打赏
  • 举报
回复
自己顶,等待高手。
woshihuzi 2005-05-09
  • 打赏
  • 举报
回复
难道我的问题太难?还是送的分数不够多?还是CSDN高手不多?
BIGbeard 2005-05-07
  • 打赏
  • 举报
回复
帮你顶,顺便学习一下。
woshihuzi 2005-05-02
  • 打赏
  • 举报
回复
自己顶,期待高手。在线等。
woshihuzi 2005-05-02
  • 打赏
  • 举报
回复
我可以用
select * from wenzhang where [正文] like '%郭靖%'
来找到所有那些在正文当中包含字符串"郭靖"的文章。每篇文章作为一条记录,总的记录集假设为rs。

下一步,并不是马上进行分页显示,而是要找出所有包含"郭靖"的段落。
while not rs.eof
one_wenzhang = rs("正文")
根据vblf用split命令把one_wenzhang分解成若干个自然段;
对于分解出来的每一个自然段,都要判断是否包含是否包含"郭靖",包含的话,放到临时表temp_duan
rs.movenext
wend

再下一步,转到另一个网页,用
select * from temp_duan
取出所有记录,进行分页显示
这样,用户翻页的时候,只是重复
select * from temp_duan
这个查询,就会变得简单,而且翻页的时候,响应时间很快。

要是别的人也来查询,我也是要用到临时表的呀,

流浪的人老兄可能没有未能全理解我的意思,我并不是简单地查询
select * from test where 字段名=郭靖
而是找到所有文章当中包含"郭靖"的每一个自然段,所以,操作就格外复杂。不能用简单的SQL查询条件来实现我的功能阿。

不用临时表,我简直不知道如何快速响应用户的翻页。用了之后,我有处理不了如下问题:

当一个用户正在翻页的时候(需要临时表temp_duan的内容),另一个用户却要查询(需要重写临时表),这时候临时表的使用旧法生冲突阿。

suifengly(兰斯洛特) 老兄的建议不错,不知道如何实现?

suifengly 2005-05-02
  • 打赏
  • 举报
回复
自己写个组件处理,
或者针对每个用户创建一个#Temp....那样数据库就.....=;=
yaqi3000 2005-05-02
  • 打赏
  • 举报
回复
主要还是你查询的条件及分頁时的代码写好就可以了.
yaqi3000 2005-05-02
  • 打赏
  • 举报
回复
本来你查询时用的 select * from test where 字段名=郭靖

不管你誰来询结果都是一样的...
woshihuzi 2005-05-02
  • 打赏
  • 举报
回复
自己顶,期待高手!
woshihuzi 2005-05-02
  • 打赏
  • 举报
回复
再顶!加50分。
woshihuzi 2005-05-02
  • 打赏
  • 举报
回复
如果我不用临时表,那么,每次把数据库检索一遍都挺费劲的,我总不能在用户每翻页一次的时候,都让脚本重新查询数据库一次吧。这就是我是用临时表的原因。可是我没有想到如何处理用户的并发查询请求。这是一对矛盾啊,我困了好几天,还请大家帮帮我,谈谈自己在遇到类似问题的时候,如何做的。谢谢!

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧