Рейтинг:2

Как я могу массово удалить пользователей?

флаг kr

Мой сайт взломали, и я попросил онлайн-сервис его очистить. Однако теперь у него более 150 000 учетных записей пользователей, большая часть которых не имеет назначенных ролей. Как удалить эти учетные записи и их содержимое?

PS: Решения Drush приветствуются и приветствуются, но на данный момент я бы предпочел ответы без Drush.

Я попробовал предложение 1 в Как массово удалить «заблокированных» пользователей? но оба варианта отнимают много времени и модуль VBO как будто завис. Предложение 2 кажется самым быстрым вариантом, но /ядро/модули/пользователь/user.admin.inc файл не существует в Drupal 8.7.

Рейтинг:4
флаг cn

Я просто должен был сделать это недавно. Я обнаружил, что проще всего было создать список адресов электронной почты, которые нужно удалить, в текстовом файле.

_remove_user_emails.txt

[email protected]
[email protected]
[email protected]

Затем обработайте их с помощью простого скрипта ниже:

remove_users.sh

ИФС="
"
pwd
для пользователя в `cat _remove_user_emails.txt`
делать
  echo "Отмена пользователя: $user"
  ./vendor/bin/drush -y user-cancel ${user}
сделано

Вы можете составить свой список, как хотите. Я часто использую phpmyadmin и просто пишу запрос на то, что мне нужно, и экспортирую его. Что-то вроде этого:

ВЫБЕРИТЕ ОТЛИЧНЫЙ u.mail
ОТ пользователей u
LEFT JOIN users_roles ur на u.uid = ur.uid
ГДЕ u.uid > 1
И у.статус <> 0
И ur.rid имеет значение NULL
apaderno avatar
флаг us
С более чем 150 000 учетных записей пользователей кажется невозможным записать адреса электронной почты в текстовый файл, а затем удалить учетные записи пользователей с помощью Drush.
Mandock D. avatar
флаг kr
@Ryan, я попробовал ваше предложение на своем тестовом сайте, мне пришлось настроить время выполнения и т. Д. И т. Д. В моих файлах конфигурации ... то, к чему у меня нет доступа на рабочем сайте. Отмененный процесс примерно через 2 часа работы. Спасибо, но я надеюсь, что смогу найти более быстрое и эффективное решение.
флаг cn
Для того, чтобы удалить пользователей, нужно запустить все хуки. Я обнаружил, что drush — самый быстрый способ сделать это. Возможно, вместо того, чтобы помещать 150 000 пользователей в файл, попробуйте использовать меньший набор, например, 10 000 пользователей. На моем сайте было около 50 000 пользователей, и мы удалили 30 000 пользователей примерно за 15 часов YMMV. Не уверен, почему вам пришлось редактировать время выполнения, это скрипт bash, который будет запускать php снова и снова вместо одного длинного потока.
hotwebmatter avatar
флаг nr
Зачем отменять выполнение скрипта через два часа? Я бы рекомендовал оставить его включенным на ночь.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.