如何在Classic ASP中延迟执行部分脚本?

时间:2013-07-05 10:50:32

标签: recursion asp-classic sleep webservice-client thread-sleep

我有一个经典的ASP页面,可以调用外部Web服务。 这就是实际过程的工作原理:

'[Part0 : Call the external webservice]
wsResponse = setConfirmation(...)


' [PART1: external webservice is responding]    
if not wsResponse is Nothing then
 '....Process the response from the webservice according to wsResponse
  code =wsResponse.getCode
  if code = 'C' then
     'We confirm the transaction and call a storedprocedure in SqlServer
  else
    'if code is different from C, we assume, the transaction status is 'not confirmed' or 'cancelled'

 '[PART2: no answer from external webservice] 
Else 
  'so wsReponse is nothing..We don't get any answer from the external webservice
    'transaction is not confirmed
   'the transaction status is set to 'not confirmed' in database

所以我想要做的是在PART2中(当没有来自外部webservice的答案时),等待30秒,然后在数据库中发送'not confirmed'状态。所以我想再次做PART0,即:再次调用外部Web服务至少10次,看看它是否响应。一种递归过程。 所以我想到了这样做的两种方式:

  1. 在PART2中,将ASP暂停30s并再次进入PART0(调用web服务),如果仍然没有响应,则写入DB,事务未确认,但如果响应,则执行PART1。

  2. 在PART2中,调用重复PART0至少10次,如果在10次试验后没有响应,则写入DB,交易未确认。

  3. 所以我的问题是:有更好的方法可以做到这一点,或者哪一个或一个或两个会更好?而且,对于1,我们怎样才能像在dotnet或PHP中那样让ASP进入睡眠状态?

    感谢您的回答。

    此致

2 个答案:

答案 0 :(得分:3)

这是一个简单的子程序,可以延迟你需要的秒数

Sub MyDelay(NumberOfSeconds)
Dim DateTimeResume
  DateTimeResume= DateAdd("s", NumberOfSeconds, Now())
  Do Until (Now() > DateTimeResume)
  Loop
End Sub

只需在第2部分中调用此子例程

Call MyDelay(30)

答案 1 :(得分:0)

我不知道让ASP睡觉的方法。特别是当您在托管网站上时。所以我要做的是:我会像Pingdom.com这样的服务每隔10秒就要求一个ASP页面。然后,请求的ASP页面将处理任何挂起的事务(以表格形式登录)。