原理描述:

在原有织梦后台菜单中增加"清理冗余图片按钮",实现清理冗余图片的功能.

操作步骤:

1. 打开后台admin\sys_sql_query.php代码

在该文件中搜索如下代码:
//修复全部表
else if($dopost=="repairAll")
{
    $dsql->SetQuery("Show Tables");
    $dsql->Execute('t');
    while($row = $dsql->GetArray('t',MYSQL_BOTH))
    {
        $rs = $dsql->ExecuteNoneQuery("REPAIR TABLE `{$row[0]}` ");
        if($rs) 
        {
            echo "修复表: {$row[0]} ok!<br />\r\n";
        } else {
            echo "修复表: {$row[0]} 失败! 原因是: ".$dsql->GetError()."<br />\r\n";
        }
    }
    exit();
}
 
在该分支后补充如下代码:
//清理冗余图片
else if($dopost=="delerrpic")
{
    ini_set('max_execution_time',1800);//单位秒
    ini_set('max_input_time',1800);//单位秒
    //echo ini_get('max_execution_time')."\n";
    $file_a=array();
    $err_img_cnt = 0;
    function rFile($p){
      global $file_a;
      global $dsql;
      global $err_img_cnt;
      $handle=opendir($p);
      $dir_a=array();
      while ($file = readdir($handle)) {
       if($file!="." && $file!=".."){
        $tmp=$p."/".$file;
        echo "<br />dir: ".$tmp;
        if(is_dir($tmp)){
         $dir_a[count($dir_a)]=$tmp;
        }elseif(is_file($tmp)){
            $file_a[count($file_a)]=$tmp;
    $v = $tmp;
$temp=substr($v,2);
$query = "select count(*) as cnt from dede_addonimages where imgurls like '%".$temp."%'";
//echo "query sql: ".$query."<br />";
$dsql->setquery($query);
$dsql->execute();
while($row = $dsql->getarray())
{
    //print_r($row);
if($row['cnt']==0){
if(strpos($v, 'del_') == FALSE && substr($v, -7, 3)!="-lp" && substr($v, -8, 4)!="_lit" && substr($v, -10, 5)!="index"){
if(file_exists($v)) {
unlink($v);
echo "<br />unlink: ".$v;
$err_img_cnt++;
}
    }
}
}
        }
       }
      }
      closedir($handle);
      foreach($dir_a as $v){
       rFile($v);
      }
    }
    rFile("../static/allimg/171003");//调用,要遍历的目录
    $dsql->Close();
    ShowMsg("成功删除冗余图片, 共: ".$err_img_cnt."张!","javascript:;");
    exit();
}
 
 

2. 修改模板htm文件, 打开admin\templets\sys_sql_query.htm

 

<button type="Submit" name="Submit1" class="btn btn-success btn-sm" onclick="this.form.dopost.value='opimize';">优化选中表</button>
<button type="Submit" name="Submit2" class="btn btn-success btn-sm" onclick="this.form.dopost.value='repair';">修复选中表</button>
<button type="Submit" name="Submit3" class="btn btn-success btn-sm" onclick="this.form.dopost.value='viewinfo';">查看表结构</button>
<button type="Submit" name="Submit5" class="btn btn-success btn-sm" onclick="this.form.dopost.value='opimizeAll';">优化全部表</button>
<button type="Submit" name="Submit6" class="btn btn-success btn-sm" onclick="this.form.dopost.value='repairAll';">修复全部表</button>
<button type="Submit" name="Submit7" class="btn btn-success btn-sm" onClick="this.form.dopost.value='delerrpic';">清理冗余图片</button>

红色为新增

 

3. 打开系统 -> SQL命令行工具, 使用"清除冗余图片"

dedebiz 清理冗余废弃未引用图片方法的更多相关文章

  1. 织梦cms/dedecms清理冗余废弃未引用图片方法

    原理描述: 在原有织梦后台菜单中增加"清理冗余图片按钮",实现清理冗余图片的功能. 操作步骤: 1. 打开后台dede\sys_sql_query.php代码 在该文件中搜索如下代 ...

  2. 清理IOS项目未使用图片脚本

    项目经过需求的变更,产品迭代,会经过多次的改版,有些以前不再使用的图片不一定能够及时的清理掉,这些无用的图片一方面让项目图片资源的结构更加的复杂,另一方面会导致ipa包的体积变大. 因此我们需要清理不 ...

  3. 工具分享:清理 Markdown 中没有引用的图片

    前言: 之前,我写笔记的工具一直都是 notion,而且没有写博客的习惯.但是一是由于 notion 的服务器在国外,有时候很不稳定:二是由于 notion 的分享很不方便,把笔记分享给别人点开链接之 ...

  4. (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明

    原文:http://blog.csdn.net/java_jh/article/details/20068915 迟点出更新的.这个还有BUG.因为软引应不给力了.2.3之后 前几天的原文有一个线程管 ...

  5. moodle3.7上传中文文件,无法引用,图片不显示

    初始安装moodle3.7 上传图片,名称为中文时,无法引用图片,图片不显示.这里采用修改moodle根目录下的config.php文件, 添加了变量$CFG->slasharguments = ...

  6. 学习笔记:jquery1.9版本后废弃的函数和方法

    jQuery1.9+ 废弃的函数和方法 升级Jquery版本遇到的问题 (转载自:http://www.ppblog.cn/jquery1-9live.html  版权归原作者所有) jQuery1. ...

  7. node-ejs-mongodb结合的项目案例-----引用mongoose和未引用mongoose模块

    本项目个人尝试了2种方法,一个是直接用mongod,一个是引用mongod里的mongoose. nodejs-ejs-mogondb- nodej+ejs模板,通过mogondb数据查询数据实现简单 ...

  8. 【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片

    一. Application用途 1. Application用途 创建Application时机 : Application在启动的时候会调用Application无参的构造方法创建实例; Appl ...

  9. Python爬虫入门教程 4-100 美空网未登录图片爬取

    美空网未登录图片----简介 上一篇写的时间有点长了,接下来继续把美空网的爬虫写完,这套教程中编写的爬虫在实际的工作中可能并不能给你增加多少有价值的技术点,因为它只是一套入门的教程,老鸟你自动绕过就可 ...

  10. Xaml引用图片路径的方式

    最近写代码的时候遇到过好几次引用某个路径下图片资源的情况,思索了一下,便将自己所知的在xaml里引用图片资源的方法写成了个小Demo,并完成了这篇博文.希望罗列出的这些方式能够对大家有所帮助. Xam ...

随机推荐

  1. 【VS Code 与 Qt6】QCheckBox的图标为什么不会切换?

    本篇专门扯一下有关 QCheckBox 组件的一个问题.老周不水字数,直接上程序,你看了就明白. #include <QApplication> #include <QWidget& ...

  2. 苹果WWDC发布会总结

    今年的全球开发者大会没有让人失望.在今天的主题演讲中,苹果首次展示了备受期待的混合现实耳机,证实了过去几个月出现的许多谣言. 虽然这次苹果的 Vision Pro耳机成为了焦点,但该公司还发布了一些其 ...

  3. uniapp主题切换功能的方式终结篇(全平台兼容)

    前面我已经给大家介绍了两种主题切换的方式,每种方式各有自己的优势与缺点,例如"scss变量+vuex"方式兼容好但不好维护与扩展,"scss变量+require" ...

  4. 深入探索C++对象模型(Inside the C++ object model) -- 摘阅笔记(关于对象 - esp 1)

    Object Lessons 关于对象 在C语言中,"数据"和"处理数据的操作(函数)"是分开声明的,也就是说 ,语言本身并没有支持"数据和函数&qu ...

  5. 使用Git进行版本控制和协作:代码共享、协作和版本管理

    目录 引言 Git 是一款开源的分布式版本控制系统,它已经成为了现代软件开发中必不可少的工具之一.在这篇文章中,我们将介绍如何使用 Git 进行版本控制和协作,以实现代码共享.协作和版本管理.Git ...

  6. [ARM 汇编]高级部分—ARM汇编编程实战—3.3.1 嵌入式系统的基本概念

    嵌入式系统是一种特殊的计算机系统,通常用于执行特定的任务.它通常包含一个或多个微处理器.存储器和外围设备.与通用计算机系统相比,嵌入式系统具有体积小.功耗低.成本低和实时性强等特点.在这一部分,我们将 ...

  7. mysql 查询时间段的数据怎么写?

    测试让我查询2个时间段的数据,这里不怎么会,所以记录一下:   一般可以使用如下语法: select * from xxx表 where xx='xx' and time between '时间戳' ...

  8. ABP - 缓存模块(2)

    1. 缓存模块源码解析 个人觉得 ABP 分布式缓存模块有三个值得关注的核心点.首先是 AbpRedisCache 类继承了微软原生的 RedisCache,并 通过反射的方式获取RedisCache ...

  9. Android实时获取摄像头画面传输至PC端

    前言 最近在做一个PC端小应用,需要获取摄像头画面,但是电脑摄像头像素太低,而且位置调整不方便,又不想为此单独买个摄像头.于是想起了之前淘汰掉的手机,成像质量还是杠杠的,能不能把手机摄像头连接到电脑上 ...

  10. 源码解析Collections.sort ——从一个逃过单测的 bug 说起

    本文从一个小明写的bug 开始,讲bug的发现.排查定位,并由此展开对涉及的算法进行图解分析和源码分析. 事情挺曲折的,因为小明的代码是有单测的,让小明更加笃定自己写的没问题.所以在排查的时候,也经历 ...