作者:ganthur (http://www.ganthur.cn)

       这些天cnpda遇到了各种困难,其中一个问题是大量帖子的附件丢失了,而且是莫名其妙的丢失,帖子中显示的是[attachment]XXXXX[/attachment],但是附件还在服务器上。

       经过分析,有两种方法,一种是重新上传一个附件,可以修复单个帖子,另一中方法是通过修复表posts中的attachment字段。所以写了段脚本,添加到了discuz的计划任务中,可以作为比较好的修复的临时方法。

       计划任务的执行频率可以根据论坛情况自己设定。代码如下:

<?php    
if(!defined('IN_DISCUZ')) {    
    exit('Access Denied');    
}    
require_once DISCUZ_ROOT.'./include/cache.func.php';    
require_once DISCUZ_ROOT.'./include/common.inc.php';    
include DISCUZ_ROOT.'./uc_client/client.php';    
  
$query = $db->query("SELECT pid FROM {$tablepre}attachments");    
   while($thread=$db->fetch_array($query)) {    
   $p=$thread['pid'];    
   $db->query("UPDATE {$tablepre}posts SET attachment ='1' WHERE pid='$p' AND attachment ='0'");    
   }    
?>  
收集 | 评论(0) | 引用(0) | 阅读(3028)
发表评论
昵称

网址

电邮
打开HTML 打开UBB 表情 打开表情 隐藏 记住我 [注册]