※缘聚久久※≡ 娱乐休闲 ≡『 资讯平台 』 → [分享]久久论坛数据清理过程与编程


  共有7741人关注过本帖树形打印复制链接

主题:[分享]久久论坛数据清理过程与编程

客人(114.114.*.*)
  1楼


[分享]久久论坛数据清理过程与编程  发帖心情 Post By:2010-1-4 17:41:34 [只看该作者]

总则

 

    清理工作总算告一段落了.今天进行了最后的清理工作.清理掉无效贴子的相关图片,一直以来总被图片的清理方式困扰.最后由自己分析了数据库搞了个独断专行.

 

    清理思路:在进行过贴子的清理数据库的压缩后.得到了一份现存有效的数据(清理过的数据库),依据数据库中的数据表 Dv_UpFile 的 F_Filename 字段去判断图片是否为有效.再进行现存所有图片的文件列表进行排除,排除掉数据库中的部分.最终得到的结果就是要清理掉的图片.理论上,这样的结果是完美的但论坛是一个众人参与的地方.在历史的数据(被清理掉的)中,如果用户将图片上传到被清理的版块,其结果是上传贴子不存在了,那么用户所上传的图片也将被清理.

 

    编程思路: 确认取得 UploadFile 文件夹下所有子文件夹中的文件清单 , 构建成符合要求的字串 , 与数据库 Dv_UpFile 表 F_Filename 字段格式相同,生成 Xml 文件 , 打开数据库 Dv_UpFile 表,取出 F_Filename 字段,只要存在的数据全部从 Xml 中删除节点.最后依据存留的节点内容删除文件.

 

    知识要点: ASP VbScript 基础, Html 语言基础, Asp 数据流操作, Asp Fso 基本应用, Xml 基本应用.

 

每天写一些.实在没有精力一次写完.

以下的叙述都是一些基础知识.高手可以无视了.

[此贴子已经被作者于2010-1-4 22:39:13编辑过]

 回到顶部
客人(114.114.*.*)
  2楼


  发帖心情 Post By:2010-1-4 17:41:55 [只看该作者]

ASP VbScript 基础

 

    ASP 是 Active Server Page 的缩写,意为"动态服务器页面".ASP 是微软公司开发的代替 CGI 脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单,方便的编程工具.ASP 的网页文件的格式是 .asp,现在常用于各种动态网站中.例如现在正在使用的 [ 久久论坛 ].

 

    页面中的 VbScript 是基于 Vb 语言的一个分支.如果你已经学习过 Visual Basic 那么就能很轻松的使用 Visual Basic 的语法进行编写 ASP 网页.就算对 Visual Basic 不了解也没有关系.因为 VB 语言非常的简单科学.

 

    看一段页面的源码:

 

以下内容为程序代码:

1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"  />
6 <title>动网论坛清理助手 CopyRight To 缘聚久久</title>
7 <style type="text/css">
8 body{font-family:Arial, Helvetica, sans-serif; background-color:#666; line-height:1.2em; font-size:0.9em; color:#0F0;}
9 span{padding:0 5px;}
10 Form{ float:left; width:auto;}
11 </style>
12
</head>
13
<body>
14</body>
15</html>

 

    以上,是一个显示背景色为 #66666  前景色为 #00FF00 的空的网页源码. 在第13行与第14行间输入任何文本则可看到前景色.与 HTML 不同之处在于源码的第1行, <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 使用了尖括号与百分号开头.在<%.....%> 之间的内容就是放在服务器上执行的部分.第1行解释为, 服务器脚本解释器语言( Language ) ,页面编码( CodePage ).可以看出在第1行中,指定了服务器脚本解释器语言为 "VbScript" 而页面编码则使用 "65001" ,需要注意的是 65001 的页面编码配对第5行的 charset=utf-8 ,如果要将页面使用简体中文进行编码,那么就应该将 65001 改为 936 ,而第5行则要改成 charset=Gb2312 .不要然的话,页面在执行的时候将会出现乱码.

 

    可以将以上源码(去掉行号) 保存为网页文件(.Asp 或 .Html)放在服务器上执行试试.如果服务器不支持 ASP 页面,那么你将会看到以文本显示在页面上的<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> .如果没有看到<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>这一行在页面上显示,那么说明服务器支持 Asp 页面.

 

    本地系统的IIS架设不在本文的讨论范围,这里不进行讨论.

 

    既然是 Asp 页面,上边的源码是远远不够的.这里还要进行一些变量的设置,例如页面执行的超时时间;页面所在路径的判断;服务器组件的支持等等.只有了解了服务器的情况才能更好的编写源码用于页面执行.

 

    下边开始丰富源码.

以下内容为程序代码:

1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>动网论坛清理助手 CopyRight To 缘聚久久</title>
6 <style type="text/css">
7 body{font-family:Arial, Helvetica, sans-serif; background-color:#666; line-height:1.2em; font-size:0.9em; color:#0F0;}
8 span{padding:0 5px;}
9 Form{ float:left; width:auto;}
10 </style>
11
12 <%
13 '程序名称: 动网论坛垃圾图片清理工具
14 '运行环境: Asp + Xml + Fso
15 '程序作者: Www.Yjjj.Com Red-13
16 '编写时间: 2010年01月03日
17 '###########################
18 ' 初始设置
19 '###########################
20 Dim RootPath,WWWRoot,POST_PATH,F_STR,Pic_Folder,XML_Temp,XmlFileName,Act,Temp
21 DIM FSO,F_ITEM,F_FILE,F_FOLDER,FC,FD
22 Server.ScriptTimeout=999999999                                '超时时间设置到最大
23 Response.Buffer =true                                                    '打开页面缓存
24 On Error Resume Next                                                    'ASP 容错
25 RootPath=Server.MapPath(".")                                    '页面程序根路径
26 WWWRoot=Server.MapPath("/")                                        '网站程序根路径
27 UpFilePath="UploadFile"                                                '定义操作文件夹
28 Pic_Folder=RootPath&"\"&UpFilePath                        '图片目录
29 XmlFileName="Pic_Path.Xml"                                        '定义 Xml 文件名
30 Act=""                                                                                '接收参数
31 Act=trim(request("Act"))
32
33 '###########################
34 '数据库链接
35 '###########################
36 DIM CONN,CONNSTR
37 DIM DBPATH
38 DBPATH="./数据库文件夹/数据库文件名称"                '数据库路径
39 connstr="DBQ="+server.mappath(""&DBPATH&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
40 set conn=server.createobject("ADODB.CONNECTION")
41 if err then
42 err.clear
43 else
44 conn.open connstr
45 end if
46 %>

47 </head>
48
49 <body>
50 </Body>
51 </html>

 

    上边一段源码中,从第12行到第45行处理了几件事情.

注意:

    每一行开头带个单引号的 [ ' ] 表示本行被注释, Asp 页面不执行被注释掉的行.要注意的是在 Asp 中的注释符与 Html 中的不同, Asp 总是将单引号 [ ' ] 后的内容全给注释掉,直到键入回车另起一行为止.而 Html 的注释符是成对出现的 " <!-- ***** -->" ,Html 页面会在读到 " <!-- " 时,视为释开始,直接页面读取到注释的闭合符 " -->" 后结束注释.

    可见,上边的源码中,第12行开始到第19行.都被页面注释掉了,在这些行中写入了一些页面的基本信息.

 

   

20行与21行:Dim  RootPath,WWWRoot.................  

   定义了一些全局变量名称,Asp 页面并不像 Visual Basic 那样严谨,不必遵循先定义后使用的原则可以不定义变量名称直接使用.但做为一个编写人员,还是应该有严谨的编写规范.养成良好的习惯!

    变量的定义应该避免一些敏感词,例如:Time,Now,Date,Size,Sub,Class,Function....等,这些字符是被系统保留的.如果定义这些词为变量,将会发生一些不易察觉的错误,大大增加后期调试的难度.同时还应该注意,变量名称不允许使用数字开头,例如: 1Temp,2Str...这类的变量是不合法的.应该改为:Temp1,Str2,....这样,这些是合法变量.

   

注意:

    变量名称不允许被重复定义,也就是一个名称被 Dim 了两次,如果重复定义变量,页面在执行时将会提示 "定义名重复" 的错误.

 

    定义过了变量名,就可以对变量名进行赋值了.等号有着特殊的作用,一方面是判断是否相等,另一方面是将右边的数值,字符串等内容传递给左边.

Server.ScriptTimeout=999999999             '脚本执行超时的时间设置到最大,如果不进行设置的话,一般默认为20分钟.需要注意的是,时间设置的越大占用系统资源越多,直到页面关闭时这些被占用的资源才会被系统回收
Response.Buffer =true                             '打开页面缓存,与上一行类似将这里的 True 改为 False 的话,页面每次都将从服务器上重新下载回本地,这里的设置视情况需要而定.一般在登录页将此处设置为 False 强制让服务器重新执行本页再将执行结果发送到本地计算机.如果为 True 时服务器将会从内存中读出执行结果直接发送给客户端(浏览者).设置为 False 时的好处是每一次刷新页面都将得到最新的结果.但服务器的内存开销加大.
On Error Resume Next                             'ASP 容错,本行的意思为页面在执行错误时,忽视错误继续执行下一条语句.如果注释掉本行.页面将中断在第一个错误处.(调试时请先注释掉本行,便与跟踪页面错误.)
RootPath=Server.MapPath(".")                  '页面程序根路径,取得当前页面在服务器上的绝对路径.*1
WWWRoot=Server.MapPath("/")               '网站程序根路径,取得当前网站在服务器上的绝对路径.*2
UpFilePath="UploadFile"                            '定义操作文件夹,将右边的 UploadFile 字符串赋值给左边的变量 UpFilePath
Pic_Folder=RootPath&"\"&UpFilePath          '图片目录,在取得路径后使用 & 符号串上 UpFilePath 的值,并赋值给 Pic_Folder 变量. 假设:RootPath 的值为 "D:\WWWPath\yjjj\Bbs" 在执行本句后,Pic_Folder 的值就变成 D:\WWWPath\yjjj\Bbs\UploadFile
XmlFileName="Pic_Path.Xml"                     '定义 Xml 文件名,设定一个Pic_path.Xml 的文件名,后边将会使用 XmlFileName 变量做为文件名称.
Act=""                                                    '接收参数,初始化 Act 变量的值.设定为空,什么都没有.
Act=trim(request("Act"))                          '通过页面的提交来取得 Act 的值. Trim() 是一个 Asp 函数,作用是去掉内容中头尾的空格.Request("KEY") 也是 Asp 函数,作用是取得页面提交关键字"KEY"中的内容

 

注意:

相对路径:指的是由当前位置引申出的路径,如果当前路径为 "D:\WWWPath\yjjj\Bbs" ,那么 "../" 的位置就是 "D:\WWWPath\yjjj"

绝对路径:"D:\WWWPath\yjjj\Bbs"就是一个绝对路径.区分在于,绝对路径有盘符.相对路径没有.

Server.MapPath() 作用就是取得服务器的绝对路径.因为Fso与XML的文件操作都将使用绝对路径.

 

[此贴子已经被作者于2010-1-4 22:24:55编辑过]

 回到顶部
客人(222.78.*.*)
  3楼


  发帖心情 Post By:2010-1-4 17:42:12 [只看该作者]

霸五层

 回到顶部
客人(222.78.*.*)
  4楼


  发帖心情 Post By:2010-1-4 17:42:26 [只看该作者]

 Asp 数据流操作

 回到顶部
客人(222.78.*.*)
  5楼


  发帖心情 Post By:2010-1-4 17:42:37 [只看该作者]

 Asp Fso 基本应用

 回到顶部
客人(222.78.*.*)
  6楼


  发帖心情 Post By:2010-1-4 17:42:49 [只看该作者]

Xml 基本应用

 回到顶部
美女呀,离线,留言给我吧!
蒲公英
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:侠圣 帖子:8266 积分:13773 威望:0 精华:13 注册:2003-6-20 15:39:38
  发帖心情 Post By:2010-1-4 21:17:02 [只看该作者]

搬张凳凳,发呆图片点击可在新窗口打开查看



 回到顶部
客人(114.114.*.*)
  8楼


  发帖心情 Post By:2010-1-4 22:43:48 [只看该作者]

发什么呆呀?!...图片点击可在新窗口打开查看

 回到顶部