답변:
노드, 사용자, 주석에 대해 대량 작업을 실행할 수있는 모듈 인 Views Bulk Operations를 사용할 수 있습니다 . 또한 Batch API를 사용하여 선택된 작업을 모든 노드, 사용자 또는 주석에 적용 할 수 있습니다 . 배치 API를 사용하면 여러 페이지 요청에 걸쳐 양식 처리를 분산시킬 수 있으므로 PHP 시간 초과로 인해 처리가 중단되지 않고 사용자는 진행중인 작업의 진행 상황에 대한 피드백을받을 수 있습니다.
노드를 죽이는이 방법은 매우 느리지 만 가장 안전합니다
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");
}
사용자의 경우 제거하려는 사용자를 프로그래밍 방식으로 결정할 수 있습니까? 가능하면 이전 기능을 예로 사용하여 원하지 않는 사용자를 제거 할 수 있습니다.
나처럼 파이썬 접근 방식을 선호한다면 (아마도 희귀하지만 여전히)이 문제를 해결하는 투명하고 효과적인 방법입니다.
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'
단계는 기본적으로 다음과 같습니다.
drush sql-cli -r $your-path-to-drupal -l $your-site-url
python delete-users.py
더 좋은 방법이 있다고 확신하지만 이것이 잘 작동하는 해킹 솔루션입니다.
for i in `drush sql-query 'SELECT list of usernames'`; do drush --yes user-cancel --delete-content $i; done
.
D6에 다음 두 모듈을 사용해보십시오.
사용자 정리 https://drupal.org/project/user_prune 및 사용자 삭제 https://drupal.org/project/user_delete
User Prune을 사용하면 지정한 기준에 따라 비활성 사용자를 대량 삭제할 수 있습니다.
사용자 삭제를 통해 사용자를 삭제하고 노드 및 주석을 포함하여 제출 된 모든 컨텐츠를 삭제할 수 있습니다
모든 사용자 indrupal 7을 삭제하기위한 사용자 지정 모듈을 구현했습니다. 관리자 / 사람 영역에는이 작업을 완료하기위한 새로운 양식이 있습니다.
서두르다.
샌드 박스 프로젝트입니다. k
Drush에 액세스 할 수 있고 사용자가 화이트리스트를 유지하도록 허용하고 추가 모듈 설치를 포함하지 않는 빠른 솔루션을 원하는 경우 :
drush @example.org sqlq "SELECT name FROM users WHERE name NOT IN ('keepthisuser1', 'andthisuser2')" | while read NAME; do
drush -y @example.org user-cancel $NAME ;
done
복사 붙여 넣기 전에 위의 내용 @example.org
을 유지하도록 사용자 및 목록을 모두 조정하십시오. ('keepthisuser1', 'andthisuser2')
:)
원래 질문은 6이지만, Chris Burgess의 답변을 사용 하면 Drupal 8에 적용 할 수 있습니다.
drush sqlq "SELECT name FROM users_field_data WHERE name NOT IN ('admin')" | while read NAME;
do drush -y user:cancel --delete-content $NAME;
done
select all
모든 페이지에서 모든 항목을 선택 하는 버튼 을 활성화하는 설정이 있습니다. 클릭하고 모두 죽여라!