上一篇: 圣诞就来啦。
作者:ganthur (http://www.ganthur.cn)
这些天cnpda遇到了各种困难,其中一个问题是大量帖子的附件丢失了,而且是莫名其妙的丢失,帖子中显示的是[attachment]XXXXX[/attachment],但是附件还在服务器上。
经过分析,有两种方法,一种是重新上传一个附件,可以修复单个帖子,另一中方法是通过修复表posts中的attachment字段。所以写了段脚本,添加到了discuz的计划任务中,可以作为比较好的修复的临时方法。
计划任务的执行频率可以根据论坛情况自己设定。代码如下:
这些天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'");
}
?>
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'");
}
?>