生成html的时候是不是前台就无法浏览了?这样要是在白天进行,服务器管理员恼了说不定会关了你的主机,你的访客也恼火啊!
用Opera浏览器就没问题了,生成的时候前台仍然可以照常浏览,爽!
虽然后台界面有点变形变色,有些操作无法用,但生成操作还是可以的,快试试吧!
高亮一下,为了大家用到,就滥用一次职权
蒙哪位达人加精了哈,受到鼓励,再多说几句,充实一下。
以下是补充部分:
模板不合适修改一下的时候总是有的,如果修改很简单很少,全站生成一遍的话就未免有点大动干戈了,这种时候我们就用替换程序进行替换(修改之前的代码替换为修改之后的)。还有,站点被挂马,写入了ifrmae也是用这个程序替换。这个小程序代码“科汛官方”发过,链接找不到在哪了,直接在下面贴出:
(官方提供,我好像改了几个字)
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%option explicit
Response.Buffer=true
Response.CharSet="GB2312"
Server.ScriptTimeout=9999999
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="Content-Language" content="zh-CN" />
<title>字符替换程序</title>
<style type="text/css">
<!--
#top
{
text-align:center;
margin:auto;
font-size:11pt;
}
#top_b
{
text-align:left;
width:350px;
border:1px solid #000000;
margin:auto;
padding:0px;
line-height:200%;
}
#top_b div
{
padding-left:8px;
padding-right:8px;
}
#ftitle
{
text-align:center;
width:350px;
background:silver;
font-weight:bold;
letter-spacing:5px;
font-size:15pt;
padding:3px 0 3px 0;
color:red;
margin:auto;
border:1px solid #000000;
border-width:1px 1px 0 1px;
}
#btm
{
text-align:center;
padding-top:8px;
padding-bottom:8px;
background:#ececec
}
textarea
{
width:330;
height:100px
}
#copyr
{
font-size:9pt;
text-align:center;
color:silver
}
-->
</style>
</head>
<body>
<%
if request.querystring("add")="yes" then
%>
<div id="top">
<div id="ftitle">程序处理结果</div>
<div id="top_b">
<div>
总文件:<span style="color:red" id="allfile"> </span>个
替换过文件:<span style="color:red" id="repfile"> </span>个
</div>
<div><br />被替换过文件路径列表↓<textarea id="txtreple" style="height:300px;overflow:auto"></textarea>
</div>
<div id="copyr"><br />
</div>
</div>
</div>
<%
dim oldstr :oldstr=request.form("lookstr") '源字符串
dim newstr :newstr=request.form("replacestr") '新字符串
dim rep : rep=cbool(request.form("bak")) '是否备份文件,true为备份文件
dim i : i=0 '总文件个数
dim j : j=0 '被替换的文件个数
function chkexistsfile(path) '判断一个文件是否存在,如果存在,返回true,否则返回false
dim fso
set fso=server.createobject("scripting.filesystemobject")
if fso.fileexists(path) then
chkexistsfile=true
else
chkexistsfile=false
end if
set fso=nothing
end function
function getfilecode(TemplateFname) '获取一个文件的代码
Dim FSO, FileObj, FileStreamObj
Set FSO = CreateObject("scripting.filesystemobject")
If FSO.FileExists(TemplateFname) = False Then
getfilecode=""
Else
Set FileObj = FSO.GetFile(TemplateFname)
Set FileStreamObj = FileObj.OpenAsTextStream(1)
If Not FileStreamObj.AtEndOfStream Then
getfilecode = FileStreamObj.ReadAll
End If
End If
Set FSO = Nothing:Set FileObj = Nothing:Set FileStreamObj = Nothing
end function
sub jstxt(txt) '使用JavaScript
response.write "<script type=""text/JavaScript"" language=""JavaScript"">"
response.write "<!--"&chr(13)&chr(10)
response.write txt
response.write chr(13)&chr(10)&"//-->"
response.write "</script>"
end sub
sub getfolderfile(byval cpath) '替换某一个(子)文件夹下的所有文件
response.flush
dim fso : set fso=server.createobject("scripting.filesystemobject")
if fso.folderexists(cpath)=false then
jstxt("alert("" "&replace(cpath,"\","\\") & "不存在该文件夹!"&" "") ")
response.end
end if
dim folders : set folders=fso.GetFolder(cpath)
dim sfile
for each sfile in folders.files
dim filecode : filecode=getfilecode(sfile)
dim filecode_b : filecode_b=filecode
if instr(filecode,oldstr) <> 0 and fso.GetExtensionName(sfile) <> "bak" then
jstxt("document.getElementById(""txtreple"").value+="""& replace(sfile,"\","\\") & "\r\n""" &chr(13)&chr(10))
jstxt("window.status="""& replace(sfile,"\","\\")&"""")
jstxt("document.title="""& replace(sfile,"\","\\")&"""")
filecode=replace(filecode,oldstr,newstr)
dim newfilecode : set newfilecode=fso.opentextfile(sfile,2)
newfilecode.write filecode
j=j+1
if rep then
dim newfilecode_b : set newfilecode_b=fso.opentextfile(sfile+".bak",2,true)
newfilecode_b.write filecode_b
end if
end if
i=i+1
jstxt("document.getElementById(""allfile"").innerHTML="""&i&"""")
jstxt("document.getElementById(""repfile"").innerHTML="""&j&"""")
next
dim sfolder
for each sfolder in folders.subfolders
getfolderfile(sfolder)
next
set fso=nothing
end sub
getfolderfile(server.MapPath(trim(request.form("pfolder")))) '调用程序
else
%>
<div id="top">
<form action="?add=yes" method="post" name="strform">
<div id="ftitle">字符批量替换程序</div>
<div id="top_b">
<div>
<p>文件夹地址:
<input type="text" size="25" name="pfolder"/>
</p>
<p> 如根目录请输入:/,指定目录,请输入:"/目录/"
</p>
</div>
<div>备份原文件:<input type="checkbox" name="bak" value="true" /></div>
<div><br />查找字符串↓<textarea name="lookstr" rows="10"></textarea>
</div>
<div><br />替换查找的字符串↓<textarea name="replacestr"></textarea></div>
<div id="btm"><input type="submit" value=" 确定 " /></div>
<div id="copyr"><br />
</div>
</div>
</form>
</div>
<SCRIPT type="text/javascript" LANGUAGE="JavaScript">
<!--
function chk()
{
var forma=document.strform;
if(forma.pfolder.value=="")
{
alert("文件夹地址不能为空");
forma.pfolder.focus();
return;
}
else
{
forma.pfolder.value=forma.pfolder.value.replace(/\//g,"\\");
forma.pfolder.value=forma.pfolder.value.replace(/。/g,".");
}
if(forma.lookstr.value=="")
{
alert("查找字符串不能为空!");
forma.lookstr.focus();
}
else if(forma.replacestr.value=="")
{
alert("替换查找的字符串不能为空");
forma.replacestr.focus();
}
else
{
forma.submit();
}
}
//-->
</SCRIPT>
<% end if %>
</body>
</html>
保存为asp文件运行。
说到这里就扣题了,还是说和浏览器有关的话题。
用这个程序占用CPU内存也十分了得!IE6、IE7、火狐、以IE为内核的其它浏览器比如maxthon(傲游)等,都试过,运行此程序时前台都无法浏览。
替换开始之初是在查找目录下的文件,此时资源占用不算大,及到替换进行时,服务器怎么样不知道,总之网站无法浏览。我的电脑可是明显有感觉,CPU始终是100%,基本无法干别的活。
IE占用内存不断增大直到崩溃,其间“清除缓存”没什么作用(占用内存无法减小)。火狐也是不断上升,一个目录下如果有几千页,内存占用竟达到500M以上。一个目录完成点击“清除高速缓存”倒是可以令其恢复到最初占用,但占用也十分厉害。傲游的情况好一些,但程序运行时我的电脑也基本无法干别的。
这就又说到Opera,我试过了,网站可以照常浏览,本机也可以干别的活,感觉比较轻松,大家可以试试。
[此贴子已经被作者于2008-1-23 20:13:26编辑过]