我有一个经典的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次,看看它是否响应。一种递归过程。 所以我想到了这样做的两种方式:
在PART2中,将ASP暂停30s并再次进入PART0(调用web服务),如果仍然没有响应,则写入DB,事务未确认,但如果响应,则执行PART1。
在PART2中,调用重复PART0至少10次,如果在10次试验后没有响应,则写入DB,交易未确认。
所以我的问题是:有更好的方法可以做到这一点,或者哪一个或一个或两个会更好?而且,对于1,我们怎样才能像在dotnet或PHP中那样让ASP进入睡眠状态?
感谢您的回答。
此致
答案 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页面将处理任何挂起的事务(以表格形式登录)。