<?
php
/*
* 删除指定条件的资讯
* 此脚本使用时需谨慎使用,使用前备份门户表
* pre_portal_category pre_portal_article_title pre_portal_article_content pre_portal_article_count pre_portal_attachment
*
*/
define('IN_DISCUZ',
true);
define('CHARSET', 'utf-8'
);
define('DISCUZ_ROOT',
substr(
dirname(
__FILE__), 0, -6)) . '/'
;
require_once(DISCUZ_ROOT . 'config/config_global.php'
);
require_once(DISCUZ_ROOT . 'config/config_remake_imgsize.php'
);
require_once(DISCUZ_ROOT . 'source/class/class_upload.php'
);
require_once(DISCUZ_ROOT . 'source/class/class_image.php'
);
require_once(DISCUZ_ROOT . 'source/class/class_image_ext.php'
);
require_once(DISCUZ_ROOT . 'source/function/function_core.php'
);
require_once(DISCUZ_ROOT . '_TOOLS/function/function_getdata_common.php'
);
require_once(DISCUZ_ROOT . '_CLASS/_COMMON_CLASS/Mysql.class.php'
);
$dbconfig =
$_config['db']['1'
];
$_G['tablepre'] =
$dbconfig['tablepre'
];
$mysql =
new mysql(
$dbconfig['dbhost'],
$dbconfig['dbuser'],
$dbconfig['dbpw'],
$dbconfig['dbname'],
$dbconfig['dbcharset'],
$dbconfig['pconnect'
]);
$_G['setting'] =
unserialize(
$mysql->resultOne("SELECT data FROM " .
$_G['tablepre'] . "common_syscache WHERE cname='setting'"
));
$logfilename = DISCUZ_ROOT . '/data/log/deleteArticles' .
date('Ymd') . '.txt';
//日志文件
$showprogress =
isset(
$argv[1]) &&
trim(
$argv[1]) == '1' ?
true : 1;
//是否显示过程信息
$where = ' WHERE uid=9832 and aid>1815';
// uid=10336 and aid>1815 just for yuanjun Editor
$totalnum =
$mysql->resultOne("SELECT count(*) FROM pre_portal_article_title
$where"
);
echo 'Total: ' .
$totalnum;
//exit();
$pertask = 50;
//每次从数据库中查询多少条数据,分批处理
$circletimes =
ceil(
$totalnum /
$pertask);
if (
$totalnum <
$pertask) {
$pertask =
$totalnum;
}
for (
$i = 0;
$i <
$circletimes;
$i++
) {
$aidsArr =
$mysql->fetchAll("SELECT aid, catid FROM pre_portal_article_title
$where LIMIT
$pertask"
);
$aids =
array();
$catids =
array();
foreach (
$aidsArr as $arr) {
$aids[] =
$arr['aid'
];
$catids[
$arr['catid']] =
isset(
$catids[
$arr['catid']]) ?
$catids[
$arr['catid']] + 1 : 1
;
}
$idwhere = " WHERE aid in (" .
implode(',',
$aids) . ")"
;
//update pre_portal_category
$catana = ''
;
foreach (
$catids as $catid =>
$num) {
$catana .= " catid:
$catid => num:
$num". "\n"
;
$mysql->increase(
$_G['tablepre'] . 'portal_category',
array('articles' => -
$num),
array('catid' =>
$catid));
}
//delete article from pre_portal_article_content;
$mysql->query("DELETE FROM pre_portal_article_count
$idwhere"
);
//delete article from pre_portal_article_content;
$mysql->query("DELETE FROM pre_portal_article_content
$idwhere"
);
//delete article from pre_portal_article_title
$mysql->query("DELETE FROM pre_portal_article_title
$idwhere"
);
// delete article from pre_portal_attachment
$attaches =
$mysql->fetchAll("SELECT * FROM pre_portal_attachment
$idwhere"
);
if (!
empty(
$attaches)) {
foreach (
$attaches as $attach) {
$imgurl =
$_G['setting']['attachdir'] . 'portal/' .
$attach['attachment'
];
@unlink(
$imgurl);
}
}
//增加日志
$fp = @
fopen(
$logfilename, 'a+'
);
$fileadd =
$catana. "Deleted articles aid is " .
implode(',',
$aids) . "(" .
date("Y-m-d H:i:s",
time()) . ")" . "\n"
;
@fwrite(
$fp,
$fileadd);
@fclose(
$fp);
$showprogress && showprogress("
$i/
$circletimes articles has deleted"
);
}
转载于:https://www.cnblogs.com/bandbandme/p/3581791.html
相关资源:数据结构—成绩单生成器