asp怎样提高批量查询域名的速度(按查询规则进行查询)?

wsl_month 2008-08-21 05:22:48
问题是这样:
我要让用户可选择不同的字符集(包括纯数字,纯字母,数字和字母及'-'混合),然后可以选择域名字符长度(不算域名类型如.com等,范围在(0,60]),然后可选择域名类型(可单选,也可多选),我写了一个,就是算法速度和查询速度很慢,例如:
针对纯数字十个字符的字符集,选择域名长度为4位,只选一个域名类型(如.com),就慢的运行不出来了,我想问一下单纯用asp写的这种可选择查询规则的域名查询,可行性怎样,能不能实现?我见过一个软件-----域名注册通,那个就行,可查询规则的结果好像不精确。
望多多指点!不胜感激!
另外我想说一下:7位纯数字全排列组合的结果放到文本文件,文件的大小是85.8MB,估计8位的文件大小是1000MB以上,这么大的数字量怎样提高算法生成速度和查询速度?
...全文
199 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsl_month 2008-08-26
  • 打赏
  • 举报
回复
看来不好实现...
谢谢,结贴了.
wsl_month 2008-08-25
  • 打赏
  • 举报
回复
啊,终于有人来了,我先谢谢了!!
我做了个代码链接,方便运行:
代码压缩文件
为了方便期间,暂时不考虑查询规则,只要在成百上千万的数据字典(比如numLen_5.txt)里能查询未注册的域名,然后写入数据库对应的表就行了,当然要提高查询速度,就像那个“域名注册通”软件的速度就行,最起码让人不等上一早上就行。
附加:域名注册通软件下载链接:域名注册通
zl_c 2008-08-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wsl_month 的回复:]
是的,怎样解决慢的问题?
一个一秒,十万个好象220小时,太长了,那才是五位纯数字的全排列组合
解释语言好像没编译语言做得快,
不知道那个域名注册通怎那么快。
[/Quote]

应该是用户查一个的时候,才送到万网的接口查一次,返回结果.
不用一次性将所有的结果查出来.
而且即使你一次性将所有的结果查下来,导入你的数据库里,但域名注册的数据变化了你怎么办?难道又查一次?
要知道,域名注册的根数据库是随时不停的变化的.
wsl_month 2008-08-25
  • 打赏
  • 举报
回复
是的,怎样解决慢的问题?
一个一秒,十万个好象220小时,太长了,那才是五位纯数字的全排列组合
解释语言好像没编译语言做得快,
不知道那个域名注册通怎那么快。
wsl_month 2008-08-25
  • 打赏
  • 举报
回复
网关返回结果的速度好像控制不了,那是万网提供给代理商的,ajax查一个平均时间大约1秒
wsl_month 2008-08-25
  • 打赏
  • 举报
回复
哎,代码太多,我还是提供下载吧,请多多指教,帮我改改提高速度,不胜感激!!!
<%
'-------------
'参数说明:mychar是字符集,length是域名的长度,num2是域名重复次数,
'D_domain是域名的前缀,domain_D是后缀,dmnArgs是生成的域名字符串
'-------------
function getIDString(ByVal mychar,ByVal length)
if length=1 then
dim j
for j=0 to ubound(myChr)
dim tempStr,tmpStr,n,m
tempStr=mychar&CStr(myChr(j))
for n=0 to num2-1
tempStr = tempStr & tempStr
next
tempStr=D_domain&tempStr&domain_D
for m=0 to ubound(extArr)
tmpStr=tmpStr&tempStr&"."&extArr(m)&",<br>"
next
next
dmnArgs = dmnArgs & tmpStr
end if
if length>1 then
length=length-1
dim i
for i=0 to ubound(myChr)
dim mchar
mchar=mychar&myChr(i)
call getIDString(mchar, length)
next
end if
end function

'===================
'查询域名
'WinHttpRequest是一个组件,相当于xmlhttprequest,发送接受请求
'===================
Function whois(domainStr)
dim http,ApiUrl,vIn,strvIn
If domainStr<> "" then '如果一切正常才去调用生产中心
set http=server.CreateObject("WinHttp.WinHttpRequest.5")
http.SetTimeouts 30000,60000,30000,30000
ApiUrl="http://panda.www.net.cn/cgi-bin/check_muitl.cgi" '

Err.Clear
On Error Resume Next

http.Open "POST", ApiUrl, False
http.Send "domain="&domainStr

if Err.Number = 0 Then
vIn=encode(http.responsebody)

if instr(vIn,vbcrlf) = 0 then
vIn = vIn
end if
strvIn = strvIn & vIn

dim arr_body,i,returnlist
arr_body = split(strvIn, vbCrLf)

for i =0 to ubound(arr_body) -1
returnlist = split(arr_body(i),"|")
if returnlist(2) ="211" or returnlist(2) ="212" then
whois= whois&returnlist(1)&" <a href=domain_info.asp?domain="&returnlist(1)&"><font color=red>已被注册</font></a>"&"<br>"
elseif returnlist(2) ="210" then
whois= whois&returnlist(1)&" <a href=domain_activate.asp?productid="&replace(returnlist(0),".","")&"&domain="&returnlist(1)&">立即注册"&"</a><br>"
else
whois= whois&returnlist(1)&" 服务器忙"&"<br>"
end if
next
else
whois= whois&returnlist(1)&" 返回异常"&"<br>"
end if
End If
End function

function encode(vIn)
dim strReturn,ThisCharCode,q,NextCharCode
strReturn = ""
For q = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,q,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,q+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
q = q + 1
End If
Next
encode=strReturn
end function
%>
redcn2004 2008-08-25
  • 打赏
  • 举报
回复
要解决慢的问题
wsl_month 2008-08-25
  • 打赏
  • 举报
回复
我也用asp写了一个,一方面要用递归根据规则生成大量数据,另一方面,这些数据还要查询,速度慢到啥程度不说,关键是结果执行不出来,晕,我贴上asp的几个关键函数,望看看怎样改能提高生成数据和查询速度.
zl_c 2008-08-25
  • 打赏
  • 举报
回复
问题的关键不在如何加快本地读取文本的速度,而是在于查询网关"http://panda.www.net.cn/cgi-bin/check_muitl.cgi"给你返回结果的速度.
zl_c 2008-08-23
  • 打赏
  • 举报
回复
最好把代码贴下.
redcn2004 2008-08-23
  • 打赏
  • 举报
回复
如果是用户根据规则即时生成代码,如果一个线程查,是不是太慢了,应该采用多线程的查

28,409

社区成员

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

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