玩传奇论坛

标题: 节省论坛空间--清理多余无用的附件!! [打印本页]

作者: admin    时间: 2018-2-7 08:11
标题: 节省论坛空间--清理多余无用的附件!!
节省论坛空间--清理多余无用的附件
帖子被删,但不知道其帖子里的附件是否也同样清理,用用这个吧!!!

使用方法:把这段代码保存为一个php文件,文件名任意,也可以下载附件,上传到论坛根目录执行即可。
为了安全,使用前请先备份资料,希望对朋友你有用!


  1. <?php
  2. /*
  3. Discuz!清理多余的附件
  4. */

  5. ob_start();
  6. session_start();
  7. $pertask=600;//每次处理的文件数,你可以根据情况更改

  8. require_once './include/common.inc.php';
  9. //身份检查
  10. if($adminid!=1)
  11.   exit('对不起,只有管理员才可以执行此操作!');
  12.   
  13. //利用session保存已清理文件列表??
  14. if(!session_is_registered("delfiles")){
  15.   session_register("delfiles");
  16.   $delfiles=array();
  17. }

  18. if ($begin==NULL) $begin=0;
  19. $end=$begin+$pertask;
  20. //列目录,取得文件列表??
  21. $array=list_dir($attachdir);
  22. if ($end>count($array)) $end=count($array);

  23. //=================================================================
  24. for ($i=$begin; $i<$end; $i++){
  25.   $search=str_replace("$attachdir/","",$array[$i]);
  26.   //搜索文件是否在资料库中存在??
  27.   $result=$db->query("SELECT attachment FROM {$tablepre}attachments where attachment=\"$search\"");
  28.   if (!$attach = $db->fetch_array($result)){
  29.           @unlink($array[$i]);//清理文件。你可先注释掉这句,不执行清理操作,只显示多余的附件          $delfiles[]=$search;//保留已清理文件名,以作输出?
  30.     }
  31. }
  32. //=================================================================

  33. if ($end<count($array)){
  34.   echo "已处理文件数:".$end."<br>";
  35.   $nextlink=$_SERVER['PHP_SELF']."?begin=".$end;
  36.   echo "<meta http-equiv=\"refresh\" content=\"1;URL=".$nextlink."\">";
  37.   echo "<a href=\"".$nextlink."\">程式将自动继续或单击这里?...</a>";
  38. }
  39. else {
  40.     $count=count($delfiles);
  41.     if ($count>0){
  42.     echo "找到多余附件共".$count."个,已清理,被清理文件如下:<hr>";
  43.     foreach($delfiles as $value)
  44.         echo "$value<br>";
  45.   }
  46.   else
  47.     echo "没找到多余的附件";
  48.   session_destroy();
  49. }
  50. ?>



  51. <?php
  52. //列目录
  53. function list_dir($dirname)
  54. {
  55.         static $result_array=array();   //静态阵列,保存函数返回值。???
  56.         $handle=opendir($dirname);
  57.         while ($file = readdir($handle))
  58.         {
  59.                 if($file=='.'||$file=='..'||$file=='index.htm')
  60.                         continue;
  61.                 if(is_dir("$dirname/$file"))
  62.                         list_dir("$dirname/$file");  //如果是目录,递迴调用。
  63.                 else
  64.                         $result_array[]="$dirname/$file";
  65.         }
  66.         closedir($handle);
  67.         return $result_array;
  68. }
  69. ?>
复制代码
清理多余附件.rar (1.12 KB, 下载次数: 0, 售价: 1 元宝)
作者: 七玉    时间: 2018-3-4 10:55
么有分,谁能送我点积分啊::>_<::




欢迎光临 玩传奇论坛 (http://wanmirbbs.com/) Powered by Discuz! X3.2