it-swarm-ko.tech

1600 명의 사용자와 2500 개의 게시물을 삭제하는 방법?

몇 년 전 Drupal 6.9)로 사이트를 구성한 후 잊어 버렸습니다. 160 페이지의 사용자가 모두 스패머이고 3을 제외한 모든 사이트를 삭제해야합니다. MySQL 호출로 인해 한 번에 페이지가 고통 스럽습니다 (제 생각에). 약 2500 포럼 게시물을 삭제해야합니다.

데이터베이스에서 직접 레코드를 삭제하는 것이 약간 두렵습니다.

"대량 삭제"라는 모듈을 보았지만 Drupal 버전 5 용이며 버전 6에서는 사용할 수 없습니다.).

10
John R

노드, 사용자, 주석에서 대량 작업을 실행할 수있는 모듈 인 Views Bulk Operations 를 사용할 수 있습니다. 또한 Batch API 를 사용하여 선택한 작업을 모든 노드, 사용자 또는 주석에 적용 할 수 있습니다. 배치 API를 사용하면 양식 처리를 여러 페이지 요청에 분산시킬 수 있으므로 PHP 시간 초과로 인해 처리가 중단되지 않고 사용자가 진행 상황에 대한 피드백을받을 수 있음) 지속적인 운영.

17
kiamlaluno

노드를 죽이는이 방법은 매우 느리지 만 가장 안전합니다

function MYMODULE_menu(){
  $items['admin/mymodule/killnodes/%'] = array(
      'title' => 'Kill nodes',
      'page callback' => 'kill_nodes',
      'page arguments' => array(3),
      'type' => MENU_CALLBACK,
      'access arguments' => array('administer site configuration'),
  );
  return $items;
}

function kill_nodes($type){
  $query = "SELECT node.nid AS nid FROM {node} node WHERE node.type IN ('%s')";
  $result = db_query($query, $type);
  $count = 0;
  while($row = db_fetch_object($result)){
    node_delete($row->nid);
    $count++;
  }
  $message = t('!count nodes has been killed. Pif-Paf!', array('!count' => $count));
  drupal_set_message($message);
  return t("That's all folks");
}

사용자의 경우 제거하려는 사용자를 프로그래밍 방식으로 결정할 수 있습니까? 가능하면 이전 기능을 예로 사용하여 원하지 않는 사용자를 제거 할 수 있습니다.

3
dobeerman

이 작업에 대한 사용자 지정 모듈을 만드는 대신 간단한 스크립트 를 사용하고 Drush 로 실행할 수 있습니다. 많은 사용자와 노드를 처리해야하므로 Batch API를 사용하는 것이 좋습니다 (그리고 Drush와 함께 사용 ).

3
Pierre Buyle

나처럼 Python 접근 방식 (아마도 희귀하지만 여전히))을 선호하는 경우이 문제를 해결하는 투명하고 효과적인 방법입니다.

import os

# Build up a variable containing the usernames
# This list was built using drush sql-cli, then
# SELECT name FROM users 
#   where $your-where-condition 
#   order by uid asc 
#   INTO 
#     OUTFILE '/tmp/users.csv' 
#     FIELDS TERMINATED BY ',' 
#     ENCLOSED BY '"' 
#     lines terminated by ', ' ;
users = [result from SQL goes here]

for user in users:
    print("Deleting spam user: %s..." % user),
    os.system('drush --yes -r $your-path-to-drupal -l $your-site-url user-cancel --delete-content %s > /dev/null' % user) 
    print 'Done'

단계는 기본적으로 다음과 같습니다.

  1. drush sql-cli -r $your-path-to-drupal -l $your-site-url로 DB에 로그인하십시오
  2. 자신의 where 조건으로 위의 SQL을 실행하고 결과를 users 변수에 붙여 넣습니다.
  3. Drush 명령으로 drupal 경로 및 사이트 이름 업데이트)
  4. python delete-users.py로 스크립트를 실행하십시오.

더 좋은 방법이 있다고 확신하지만 이것이 잘 작동하는 해킹 솔루션입니다.

2
mlissner

고급 사용자 모듈을 사용하십시오. 이 모듈은 "고급"탭을 사용자 관리 페이지에 추가합니다. 이 탭에서 모든 속성 (역할, 상태 등)별로 사용자를 필터링하고 모두를 선택할 수 있습니다. 사용자 삭제로 사용자의 삭제 방법을 선택하고 모든 컨텐츠를 제거하면 해당 사용자가 작성한 모든 컨텐츠를 삭제할 수도 있습니다.

1
Sinan Erdem

모든 사용자 indrupal 7을 삭제하기위한 사용자 지정 모듈을 구현했습니다. 관리자/사람 영역에는이 작업을 완료하기위한 새로운 양식이 있습니다.

서두르다.

샌드 박스 프로젝트입니다. k.

프로젝트에 링크

1
lgrtm

D6에 다음 두 모듈을 사용해보십시오.

사용자 정리 https://drupal.org/project/user_Prune 및 사용자 삭제 https://drupal.org/project/user_delete

User Prune을 사용하면 지정한 기준에 따라 비활성 사용자를 대량 삭제할 수 있습니다.

사용자 삭제를 사용하면 사용자를 삭제하고 노드 및 주석을 포함하여 제출 된 모든 컨텐츠를 삭제할 수 있습니다

1
FreeScholar

모두 삭제 모듈이 유용 할 수 있습니다.

설치 한 후에는 다음과 같은 작업을 수행 할 수 있습니다.

drush delete-all articles

또는

drush delete-all users

Devupal 6의 드루팔 6 버전 :

빠른 삭제를 제외한 모든 것이 작동해야합니다.

0
Mauro Sardu