请教ASP聊天室内如何自动读取聊天数据的最后的几行

voyager 2000-07-17 09:50:00
我做了一个聊天室,但是在聊天时,由于数据多了,有些人反映速度太慢,能否只显示最后的一些话,
如显示10行左右。
我用的是ASP,聊天数据写在TextStream对象里,就是文本文件啦。越后说的话显示在越下面。请教我如何处理这个问题?
总不会要我先把所有数据读出并保存,再显示出一部份吧?
ASP为何无法从文本文件最后开始读?
或读出这个文本文件有几行?
或让指针定位在某一行而非得顺序读写?救我啊!!
...全文
264 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hicaci 2000-09-05
  • 打赏
  • 举报
回复
如果同时聊天的人不是很多的话,而且你又非要用文件存档的话,也可以。就是将每条写入文件x。1,当要将新信息写入前,先将老信息该存为另一文件laox,2,写入新信息写在x上,3,将
laox到回x中,4删除laox.5,刷新时用x.
-------------------------------over.
ring 2000-09-05
  • 打赏
  • 举报
回复
补充一下
那个行数指的是一个字段,如果嫌麻烦把它设为自增的就行了
ring 2000-09-05
  • 打赏
  • 举报
回复
我做过
首先数据库里每一行都要有一个行数(序号)
你可以用session记录本用户取的最后一行的行数,查询的时候只要在条件里再加上一个行数大于该session的条件就行了,然后把该session的值替换为最后一条记录的行数就行了
如果该session为空(比如刚进入聊天室),你就把它置为最后一条记录的行数减去某个数(你想显示的行数)就行了
subzero 2000-09-05
  • 打赏
  • 举报
回复
太可怕了!!
竟然用文本文件来存取聊天数据?
还有tophead跟cjlong老兄呀!放在数据库中?你们这样会误人子弟的嘛!
肯定要用application的
至于刷新问题,拉的话可以用一个隐藏的frame来实现
推就要写cgi了,perl到是也成,不过效率很低
hhzh426 2000-09-03
  • 打赏
  • 举报
回复
数据库中增加一个时间字段记录存储时间
set rs=conn.execute("select * from yourtable order by timefield DESC",10,1)
将返回最新的十条记录。
xiaoy2000 2000-07-24
  • 打赏
  • 举报
回复
对不起:少写一行代码实现方法 dim x x=0
do while not AtEndOfStream
x=x+1

SkipLine '请加上这句,否则死循环了

loop

对不起
xiaoy2000 2000-07-24
  • 打赏
  • 举报
回复
你的意思就是取最下面的几行(十行吧):我想这样
测试文本总行数x,if (x-10)>0 then 跳到 x-10 处
实现方法 dim x x=0
do while not AtEndOfStream
x=x+1
loop
判断(x-10) 如果 >0 则
for i=1 to (x-10)
SkipLine
next
跳到相应行,上边相应变量定义以及边界值,要实测一下,本文只提供思路,x是否差1或2的
你试一下吧
华南虎哥 2000-07-21
  • 打赏
  • 举报
回复
vo兄也别怪CJ兄了,我认为只要提供一种思路就行了,并不要求100%。这个问题我也比较关注,因为我也着手做个聊天室。如果VO兄以及各位有什么好的见解可以讲讲。
voyager 2000-07-21
  • 打赏
  • 举报
回复
cjlong 老兄啊
你能不能把代码试过后再贴上来?????

dim s as int(错! ASP 不定义类型)
while not aa.atendofline
^^^^^^^^^^^^^^
aa.skip(5)
^^^^^^^^^^
wend
(错!这毫无意义)


luodf 2000-07-21
  • 打赏
  • 举报
回复
sorry,是application里
luodf 2000-07-21
  • 打赏
  • 举报
回复
将新的数据(20/50行)放在session里,定时将数据保存到文件中去。
TopHead 2000-07-19
  • 打赏
  • 举报
回复
我说的客户端定时刷新,是指客户端定时刷新页面。

服务器端定时发送是指客户端和服务器端的连接不断开,由服务器定时往客户端发送最新增加的数据。
cjlong 2000-07-19
  • 打赏
  • 举报
回复
1\建议使用数据库为后台
2、textStream可使用skipline(n)方法
dim s as int..
set aa=fso.opentextfile("...")
while not aa.atendofline
aa.skip(5)
wend
s=aa.line
aa.close
set aa=fso.opentextfile("...")
n=s-20
aa.skip(n)
do while aa.atendofline
str=aa.readline
loop

hnalbert 2000-07-18
  • 打赏
  • 举报
回复
TopHead:
请讲讲怎样用客户端定时刷新和服务器定时发送刷新。
谢谢!
TopHead 2000-07-17
  • 打赏
  • 举报
回复
如果你的聊天数据在数据库中的话比较容易解决一些,顺便问一下,你客户端的刷新是怎么做的,是客户端定时刷新,还是服务器定时发送刷新?

28,390

社区成员

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

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