ASP定时组件

定时

在ASP中我们为完成某些特定功能时,需要延迟输出,让脚本运行更长的时间,比如说聊天室程序,我们知道更新对话内容有两种方法,一是
客户端自动刷新,每隔一段时间向服务器查询一次,看看有没有新的内容,而另一种就是服务器主动输出新的内容,这两
种办法的优缺点很明显,前者内容不够实时性,但对服务器的负担较轻,而后一种,由于需要长时间在服务器上执行脚
本,因此人数多的时侯,当然是一种累服务器的工作了。
  针对后一种应用,我们需要延迟ASP的执行,但又不能空占用服务器资源,比如说加个无穷循环下去,这样的话很快就
把你的CPU吃掉了,只有在循环中加如一个定时功能,让每个循环可以挂起一定是时间,那么这段时间CPU是空闲的,这样
才不致于让CPU“当”了机
  先看这个例子http://chat.aaaaa.com.cn/question/disptest.asp,看看它象不象碧海银沙那类的聊天室的更新访
式?
  ASP中没有setTimeout这类的定时语句,我们需要利用ASP组件来解决,同样,可以采用VB6来编制,具体操作方法参考
上一编组件的做法,为了挂起线程,我们需要运用WIN32API函数Sleep,同样新建一个Active Dll工程,起名字为Timer,
类名为sleep。
  sleep这个WIN32API函数可以用VB6自带的API文本浏览器中找到它的声明方法
  现在类sleep的程序如下,这个组件程序很简单的,我不多解说了。
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private m_set As Long
Public Property Get setup() As Long
  setup = m_set
End Property
Public Property Let setup(strset As Long)
  m_set = strset
End Property
Public Function Sleeptime()
  Sleep (setup)
End Function

  把它编译一下,就生成timer.dll这个组件dll,如果您不会写VB程序,那么您也可以在下载的文件包里找到timer.dll
这个文件。把它copy到windows目录下,在MS-DOS方式中输入
  c:\windows\regsvr32 timer.dll
  完成组件注册,同样可以使用这个定时组件。
  现在解说刚才按个列子的ASP调用文件。看看这个组件如何使用
*定时器的应用
<html>
<title>定时器的应用</title>
<head>
</head>
<body>
<%
‘这个是脚本执行时间,默认为90秒,需要改长一点,不然在90秒后程序会被中断'3600为一小时
Server.ScriptTimeOut=3600
set obj=server.createobject("timer.sleep")
'参数1000为线程挂起一秒钟,可以随意设定
obj.setup=1000
do while true
  response.write "("&right(Time,8)&")  您好,现在计数值为<font color=red>"&application("time_count")
&"</font><br>"
  obj.sleeptime
  application("time_count")=application("time_count")+1

  If Not Response.IsClientConnected Then
    set obj=nothing
    session.abandon
  End If

loop

%>

</body>
</html>

  好了,我把上面的代码打包,大家看看这个组件对您自己有什么帮助吧,可能一定用处也没有,但也可能很有用处,

以上组件的运行环境为:Pwin98+Pws4

           NT40+IIS40

时间: 2024-10-03 14:13:10

ASP定时组件的相关文章

Asp定时执行操作 Asp定时读取数据库(网页定时操作详解)_小偷/采集

目前定时的操作有: 一.Html页面的定时刷新(Refresh--刷新 ) 1,Refresh (刷新) 代码使用说明 说明:让网页多长时间(秒)刷新自己,或在多长时间后让网页自动链接到其它网页. 用法:<Meta http-equiv="Refresh" Content="30"> <Meta http-equiv="Refresh" Content="5; Url=http://www.jb51.net"

ASP脚本组件实现服务器重启_应用技巧

大家知道直接使用ASP是不能够重启服务器的,这时我们需要制作一个组件来实现功能,ASP通过这个组件调用系统API,然后按照不同的重启和关机方式进行操作! 下面先说COM的制作,在VB中新建一工程,当然是AceiveX dll的. 1)先修改工程属性,在工程属性窗口将工程名称改为system,在类模块窗口将模块名称改为contral,保存工程; 2)然后添加一个模块,用来声明需要使用的API和常数,下面是模块中的内容.Declare Function ExitWindowsEx Lib "user

Asp定时执行操作 Asp定时读取数据库(网页定时操作详解)

目前定时的操作有: 一.Html页面的定时刷新(Refresh--刷新 ) 1,Refresh (刷新) 代码使用说明 说明:让网页多长时间(秒)刷新自己,或在多长时间后让网页自动链接到其它网页. 用法:<Meta http-equiv="Refresh" Content="30"> <Meta http-equiv="Refresh" Content="5; Url=http://www.jb51.net"

在Visual J++中编写ASP COM组件

visual Java是一种以网络为中心的编程语言,许多只使用ASP脚本难以完成的任务可以用Java轻松地实现.同时,扩展ASP应用最好的方法莫过于加入COM组件.那么,可以利用Java为ASP开发组件吗?本文通过实例,说明了在Visual J++环境下开发COM组件的具体过程. 一.概述 自Java问世以来,各种开发工具.开发环境不断出现.这些环境和工具面向不同层次的用户,具有各自的优点.那么,使用Visual J++作为Java开发平台又有哪些优点呢?粗略地讲,这些优点包括: 熟悉的开发环境

asp+XMLHTTP组件做采集常用函数收集

asp+|xml|采集|函数 asp+XMLHTTP组件做采集常用函数其中的html代码处理函数很管用,写得相当漂亮 <%'=================================================='函数名:GetHttpPage'作 用:获取网页源码'参 数:HttpUrl ------网页地址'==================================================Function GetHttpPage(HttpUrl)If IsNul

ASP实例:一个简单的ASP无组件上传类

简单的ASP无组件上传类,发出来让大家看看.可以做做实验! 以下为引用的内容: <%@ language="javascript"%><%var self = Request.serverVariables("SCRIPT_NAME");if (Request.serverVariables("REQUEST_METHOD")=="POST"){        var oo = new uploadFile(

ASP基础教程之ASP AdRotator 组件的使用

ASP AdRotator 组件 每当用户进入网站或刷新页面时,ASP AdRotator组件就会创建一个AdRotator对象来显示一幅不同的图片. 语法: 以下为引用的内容:<%set adrotator=server.createobject("MSWC.AdRotator")adrotator.GetAdvertisement("textfile.txt")%> 实例 假设我们有一个文件名为"banners.asp".它类似于

Asp无组件上传带进度条(续)

上传|无组件 几个月前,写过一篇关于Asp无组件上传带进度条的Blog,当时主要分析了一下通过Web文件上传并在后台获取分析数据的实现原理.其中实现进度条的根本就是要实现分块获取数据,根据分块大小和块数记录已上传大小.还有一些具体的细节问题当时并没有说清楚: Q: 进度信息如何访问?A: 进度信息保存在Application中,每次上传时生成一个进度ID,根据这个进度ID可以检索Application中的当前上传进度信息. Q: 进度信息以什么形式保存在Application中?A: Asp太弱

ASP无组件上传错误 ASP 0104的解决方法

错误|解决|上传|无组件 问题描述:ASP无组件上传程序无法上传较大的文件"Request 对象 错误 'ASP 0104 : 80004005'",(大概大于100kb就不行),但是原先在2000 server中可以上传5m左右的文件. 解决方法:在IIS属性中选中"允许直接编辑配置数据库",然后.在服务里关闭iis admin service服务找到windows\system32\inesrv\下的metabase.xml编辑其中的ASPMaxRequestE