×

Loading...
Ad by
  • 最优利率和cashback可以申请特批,好信用好收入offer更好。请点链接扫码加微信咨询,Scotiabank -- Nick Zhang 6478812600。
Ad by
  • 最优利率和cashback可以申请特批,好信用好收入offer更好。请点链接扫码加微信咨询,Scotiabank -- Nick Zhang 6478812600。

请教一个asp的问题,多谢!

现有一个asp的页面,其工作是用wshell.execute一个外部命令来判断服务器上一个component工作正常。每一个判断大概需要2秒左右。一共有近100台服务器需要检查。

看了一下asp的代码,很简单,就是先把所有服务器的名字读入一个array,然后用一个loop遍历每个服务器,拼凑出正确的命令字符串,然后用execute执行,在截取输出进行判断然后输出到页面上。问题就出在这里,虽然在循环里,每判断完一台服务器,就立刻用response.write输出了,但似乎页面一定要等到整个loop都执行完了才会显示。100多台服务器,都检查完要几分钟。所以每次刷新都显得很不neat。

有没有什么办法让页面能够立刻显示已经判断过的服务器的状况,而不是等到整个循环结束呢?

我想到的办法是用multi-threading,但就意味着这个页面我要重写,实在没有时间,有没有什么简便的方法?多谢先。
Report

Replies, comments and Discussions:

  • 工作学习 / 专业技术讨论 / 请教一个asp的问题,多谢!
    现有一个asp的页面,其工作是用wshell.execute一个外部命令来判断服务器上一个component工作正常。每一个判断大概需要2秒左右。一共有近100台服务器需要检查。

    看了一下asp的代码,很简单,就是先把所有服务器的名字读入一个array,然后用一个loop遍历每个服务器,拼凑出正确的命令字符串,然后用execute执行,在截取输出进行判断然后输出到页面上。问题就出在这里,虽然在循环里,每判断完一台服务器,就立刻用response.write输出了,但似乎页面一定要等到整个loop都执行完了才会显示。100多台服务器,都检查完要几分钟。所以每次刷新都显得很不neat。

    有没有什么办法让页面能够立刻显示已经判断过的服务器的状况,而不是等到整个循环结束呢?

    我想到的办法是用multi-threading,但就意味着这个页面我要重写,实在没有时间,有没有什么简便的方法?多谢先。
    • 记得IE cache server的输出,每次输出不超过1K多就等待。
    • try to use redirect instead of response.write, then pass content with url, server.redirect "//test.asp/server=s1;result=good...."
    • try flush it after every response.write
      • 能多点细节吗?
      • 似乎不行。页面还是要等到整个循环都结束了才会显示。在刷新的时候,在IE里View Source,看到是
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


        似乎在等整个页面结束。
    • 我碰到过这样的情况,用了一个很笨的方法解决。
      我的情况是这样的:如果我把所有的结果放在一个table里面显示,那么IE一定是要收到最后那个</table>才会显示的。我后来改成每个结果就是一个table。而每个table的结构一样。这样看起来版面没有什么变化。基本上每有一个结果,IE都会很快显示。不知道这种解决方法是否适合你。
      • 多谢回复。的确这个问题不是buffer的问题,是因为最后的"</table>"要等到循环结束才会出来,所以页面就一直等。我已经解决了这个问题,和你的方法类似,但不是每个记录一个表
        基本思路是,
        先在页面内放一个表,只有表头。
        然后再在页面内创建一个客户端的javascript,调用DOM里的insertrow()来对第一步做的表进行更新。
        最后,在asp中,拼凑出调用第二步创建的javascript function,用response.write输出来达到最终的目的。
        运行的还不错。

        多谢各位支招。如果这个页面当初是用c#+asp.net写的,就容易多了。
        • 能说说如果用asp.net怎么解决吗?谢谢。
    • 加<% Response.Buffer = False %>在你的asp page 的开头。
    • 问题解决了,多谢楼上各位。