|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。曾编了一个程序,使用于数学建模的数据提取阶段。现归结以下,思绪写得对照具体,看起来像教程-_-。
目标是做一个BBS的流量统计,必要剖析的数据是每分钟以内,有哪些ID在线,这些ID的IP是几,而且请求ID与IP逐一对应,不克不及有反复ID和反复IP,并请求每分钟天生一个矩阵,分离是IDIPA段IPB段IPC段IPD段,并存成文本文件,文件名为hh:mm格局.然后把这些文本文件导进MatLab举行剖析处置,现会商后面的数据取得阶段的完成办法。
数据源从http://bbs.pku.edu.cn/cgi-bin/bbsusr?to=*取得(北年夜的服务器对照烂,明天就上不往)
1,起首数据必要下载,这里接纳Msxml2.ServerXMLHTTP控件来举行异步下载取得数据源,之以是不必Microsoft.XMLHTTP是由于Msxml2.ServerXMLHTTP这个控件能够设定超不时间。这完整是开辟SXNA过程当中失掉的启示。因为数据源的特性是数据量在随时变更,不流动容量,以是有需要设定超时。不然程序将不克不及准确实行简单招致逝世机。
2,其次必要每分钟主动下载一遍数据源,并请求定时间准确存储。也就是说必需每分钟主动驱动一遍下载程序,这就请求程序可以完成主动革新功效。主动革新功效的完成有多种办法,最基本的是利用meta标签完成refresh,可是本程序请求准确把持工夫下载,必需在每分钟内包管有一次下载,以是meta标签不合用于此程序。其他的办法另有诸如javascript内里的reload办法,window.location.href办法等等,思索到兼容性的成绩选用window.location.href来完成主动驱动。SXNA中的数据更新也用的差未几这类办法。
3,为完成每分钟主动下载必要纪录下次下载的工夫,存在application("mytime")内里,然后用Javascript的Settimeout判别此次的工夫是不是抵达下次下载工夫,并把以后残剩工夫显现在屏幕上,假如到达了下载工夫,则主动革新驱动程序。这内里有一个成绩,就是Javascript只认得RFC的工夫,以是还要用一个ISOtoRFC的工夫转换子程序。当每次驱动下载之前application("mytime")要主动加60秒,如许靠application("mytime")来准确把持下载工夫。
4,数据下返来以后,用http.ResponseText来提取数据源信息,因为失掉的代码为HTML代码,以是这里接纳正则表达式来举行无效数据提取。起首剖析ID的散布纪律,注重到每个ID都跟在"bbsqry?name="以后,以是搜刮代码接纳"bbsqry?name=(w*?)""",因为每个id要反复两次,以是上面举行VALUE遍历提取的时分Matches.count要标注step2。用一样相似的办法也把ip提掏出来,搜刮代码接纳">(d+).(d+).(d+).(d+)",这里值得一提的是因为必要提取每个IP段,以是要用到SubMatches,来猎取每个子婚配的值。
5,提取完了数据还没完事,因为请求不克不及呈现反复的ID和IP以是我必需想举措往失落反复的,还要包管逐一对应,怎样往失落我想了好几种举措,入手下手想用正则表达式,但思索到如许轮回的次数太多,效力上基本划不来,弄欠好还会逝世机。俄然想到编SXNA的时分我把LINK作为数据库的主键索引从而制止了反复LINK的呈现,因而此次也盘算照葫芦画瓢。起首翻开ACCESS创建数据表,把创建一个IDIPIPA段IPB段IPC段IPD段6列,ID,IP为有索引,无反复列.不创建主动编号列,是由于每次驱动后都要删除数据,为了保险删除数据以后不紧缩数据库,如许编号会无尽头增加,何况编号也没用.
6,全体进库完成以后数据已往失落反复的了,如今就要把他们做成txt文件,并以以后的工夫作为文本文件的文件名.这里思索到了单个数字工夫的成绩,后面要补零(俄然想到了数字旌旗灯号处置内里序列的补零成绩-_-),详细如许写right("0"&minute(application("mytime2")),2),文件内里的内容就很复杂的把数据库内里的器材用ADODB.Stream写进一个文本文件就能够了,剩下的就是数据库基础操纵了.
实在思绪挺复杂的,可是做了3个小时-_-,个中次要把工夫泯灭在了工夫成绩下面,关于每分钟准确存储一个文件的成绩我编了好几种完成计划,终极都被我筛失落了,留下了一种最牢靠的.
(转载请说明出处:http://www.dc9.cn/post/ASPMathematicalModeling.asp)
下面的仅仅是最最基础的思绪,就写到这。上面是全体代码。<title>主动保留/往失落反复ID和IP/正确定时存储/按IP升序(Sipomadeforxia)v1</title>
另有多长工夫<INPUTTYPE="text"NAME="mytime"id="mytime"size="60"value="">
<br>
<%
www.dc9.cnsipoQQ17862153
这是往失落反复ID,IP版13:15
假如想依照ID排序就把orderby改成name
onerrorresumenext
dimnowstr
constTimeInterval=60
设准时间距离
假如下载工夫很慢,就写成120秒
Response.LCID=2052
constlResolve=6
剖析域名超不时间,秒
constlConnect=6
毗连站点超不时间,秒
constlSend=6
发送数据哀求超不时间,秒
constlReceive=40
下载数据超不时间,秒
constmyURL="http://bbs.pku.edu.cn/cgi-bin/bbsusr?to=*"
constmyURL="http://localhost/test.htm"
Ifisempty(application("mytime2"))then
nowstr=now()
application.Lock
application("mytime")=DateToStr(nowstr,"w,dmyH:I:S")
application("mytime2")=nowstr
application.unLock
ElseIfDateDiff("s",application("mytime2"),now)>TimeIntervalthen
response.write"工夫重置"
nowstr=now()
application.Lock
application("mytime")=DateToStr(nowstr,"w,dmyH:I:S")
application("mytime2")=nowstr
application.unLock
Else
IfDateDiff("s",application("mytime2"),now)>=TimeIntervalthen
application.Lock
addstr=DateAdd("s",TimeInterval,application("mytime2"))
application("mytime")=DateToStr(addstr,"w,dmyH:I:S")
application("mytime2")=addstr
application.unLock
EndIf
EndIf
Response.write"前次保留工夫"&application("mytime2")
Response.write"<br>"
Response.write"下次保留工夫"&DateAdd("s",TimeInterval,application("mytime2"))
Response.write"<br>"
FunctionDateToStr(DateTime,ShowType)
DimDateMonth,DateDay,DateHour,DateMinute,DateWeek,DateSecond
DimFullWeekday,shortWeekday,Fullmonth,Shortmonth,TimeZone1,TimeZone2
TimeZone1="+0800"
TimeZone2="+08:00"
FullWeekday=Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
shortWeekday=Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
Fullmonth=Array("January","February","March","April","May","June","July","August","September","October","November","December")
Shortmonth=Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
DateMonth=Month(DateTime)
DateDay=Day(Date
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。 |
|