节省论坛空间--清理多余无用的附件
帖子被删,但不知道其帖子里的附件是否也同样清理,用用这个吧!!!
使用方法:把这段代码保存为一个php文件,文件名任意,也可以下载附件,上传到论坛根目录执行即可。为了安全,使用前请先备份资料,希望对朋友你有用!
原文修改自:http://www.alan888.com/Discuz/viewthread.php?tid=60540
原文是繁体难识别的文字,我改为简体中文!!
适用版本:DZ4.0 和 DZ4.1.0
- <?php
- /*
- Discuz!清理多余的附件
- */
- ob_start();
- session_start();
- $pertask=600;//每次处理的文件数,你可以根据情况更改
- require_once './include/common.inc.php';
- //身份检查
- if($adminid!=1)
- exit('对不起,只有管理员才可以执行此操作!');
-
- //利用session保存已清理文件列表??
- if(!session_is_registered("delfiles")){
- session_register("delfiles");
- $delfiles=array();
- }
- if ($begin==NULL) $begin=0;
- $end=$begin+$pertask;
- //列目录,取得文件列表??
- $array=list_dir($attachdir);
- if ($end>count($array)) $end=count($array);
- //=================================================================
- for ($i=$begin; $i<$end; $i++){
- $search=str_replace("$attachdir/","",$array[$i]);
- //搜索文件是否在资料库中存在??
- $result=$db->query("SELECT attachment FROM {$tablepre}attachments where attachment="$search"");
- if (!$attach = $db->fetch_array($result)){
- @unlink($array[$i]);//清理文件。你可先注释掉这句,不执行清理操作,只显示多余的附件 $delfiles[]=$search;//保留已清理文件名,以作输出?
- }
- }
- //=================================================================
- if ($end<count($array)){
- echo "已处理文件数:".$end."<br>";
- $nextlink=$_SERVER['PHP_SELF']."?begin=".$end;
- echo "<meta http-equiv="refresh" content="1;URL=".$nextlink."">";
- echo "<a href="".$nextlink."">程式将自动继续或单击这里?...</a>";
- }
- else {
- $count=count($delfiles);
- if ($count>0){
- echo "找到多余附件共".$count."个,已清理,被清理文件如下:<hr>";
- foreach($delfiles as $value)
- echo "$value<br>";
- }
- else
- echo "没找到多余的附件";
- session_destroy();
- }
- ?>
- <?php
- //列目录
- function list_dir($dirname)
- {
- static $result_array=array(); //静态阵列,保存函数返回值。???
- $handle=opendir($dirname);
- while ($file = readdir($handle))
- {
- if($file=='.'||$file=='..'||$file=='index.htm')
- continue;
- if(is_dir("$dirname/$file"))
- list_dir("$dirname/$file"); //如果是目录,递迴调用。
- else
- $result_array[]="$dirname/$file";
- }
- closedir($handle);
- return $result_array;
- }
- ?>
复制代码
[ 本帖最后由 逍x遥y 于 2006-3-13 23:54 编辑 ] |