Drupal 7 开发内部培训资料, 分头诗人

如何批量删除comment

赞成!
0
否决!

突然之间发现网站评论的垃圾信息超级多,怎么批量删除垃圾信息。嗯

例如nid=1的评论的所有评论

参考了下comment模块的function comment_node_delete($node) 写了一个方法

但是这个方法有个问题,就是不能node下不能有太多评论。加入有几十万条的评论,那么这个方法的运行时间久不够长

function del_comment_bynid_submit($form,&$form_state){
/*sql查询*/
function delete_comment_all(){
$query = db_select('comment', 'c');
$query->condition('c.nid',1, '=')
->fields('c', array('cid'));
$cids = $query->execute()->fetchCol();
comment_delete_multiple($cids);
db_delete('node_comment_statistics')
->condition('nid', $node->nid)
->execute();
}


2 个回答

赞成!
0
否决!

你这个写法是没问题的,但如果运行时间过长,需要点击多次才有效。不知道你有没有了解Drupal 的Batch api,他是批量操作的,会生成一条进度条,就如drupal 安装的时候那样。你可以试一下batch方式。

赞成!
0
否决!

谢谢诗人的回答,没有用过batch,不过对于这个很感兴趣,我去研究下