注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

乡村教师的博客

隐居于村野,遨游于网络,看时事变化,品百味人生,过清贫生活……

 
 
 

日志

 
 

DedeCms删除系统残留图片的方法  

2011-04-25 08:56:19|  分类: 电脑相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
使用DEDE时,由于都是采集的数据,其中难免有些不需要或者过时的内容,但在删除图片时DEDE并不能帮我们删除其中的附带的图片,导致遗留的图片在系统中越来越多,也用不到,变成了系统垃圾,对于空间不足的朋友更是麻烦,如果数据量较小时可以删除手动删除,但当数据量大时就有些力不从心了。
我不懂PHP编程,但有别的语言的基础,拼拼凑凑写了一个可以用的批量处理遗留图片的代码。
dede\templets\content_batch_up2.htm
找到下面代码:


<input class="np" type="radio" checked="checked" name="action" value="modddpic" /><br />
更正缩图错误<br />
<input class="np" type="radio" name="action" value="delerrdata" /><br />
清空错误的文档数据</td>
修改成:
<input class="np" type="radio" checked="checked" name="action" value="modddpic" /><br />
更正缩图错误<br />
<input class="np" type="radio" name="action" value="delerrdata" /><br />
清空错误的文档数据<br />
<input class="np" type="radio" name="action" value="delerrpic" /><br />
清空错误的图片</td>
 
dede\content_batchup_action2.php
在最后一个大括号后增加
elseif($action == 'delerrpic')
{
$file_a=array();
function rFile($p){
global $file_a;
$handle=opendir($p);
$dir_a=array();
while ($file = readdir($handle)) {
if($file!="." && $file!=".."){
$tmp=$p."/".$file;
if(is_dir($tmp)){
$dir_a[count($dir_a)]=$tmp;
}elseif(is_file($tmp)){
$file_a[count($file_a)]=$tmp;
}
}
}
closedir($handle);
foreach($dir_a as $v){
rFile($v);
}
}
rFile("../uploads/allimg");//调用,要遍历的目录
foreach($file_a as $v){
$temp=substr($v,2);
$query = "select count(*) from dede_addonarticle where body like '%".$temp."%'";
$dsql->setquery($query);
$dsql->execute();
while($row = $dsql->getarray())
{
if($row[0]==0){
if(substr($v, -8, 4)!="_lit" && substr($v, -10, 5)!="index"){
if(file_exists($v))
unlink($v);
}
}
}
}
$dsql->Close();
ShowMsg("成功清除错误图片!","javascript:;");
exit();
}


操作演示如下:
操作前文件夹的图片
操作后文件夹的图片
就可以了,系统没有使用多线程处理的功能,当遗留图片较多时需要较长时间的等待,程序不删除缩略图和uploads/allimg目录下的index.html,如果uploads/allimg文件夹下有多余图片请修改程序后再用,这里贴出代码也是对DEDECMS产品的感谢。


dedecms删除无效tag


 删除模型或者栏目时,无法删除对应的文档Tag,在索引Tag时,又会显示出相关的无效Tag。


  以下是一句SQL,可以删除无效的Tag,请复制SQL语句,在PHPmyadmin中执行。

delete FROM dede_taglist where typeid not in (SELECT id FROM dede_arctype);

其中,dede_是你的表名前缀,默认为dede_ 。
  评论这张
 
阅读(579)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017