it-swarm-id.com

Bagaimana cara menghapus 1600 pengguna dan 2500 posting?

Beberapa tahun yang lalu saya mengkonfigurasi situs dengan Drupal 6.9, dan kemudian saya lupa. Saya memiliki 160 halaman pengguna yang semuanya spammer dan saya perlu menghapus semua kecuali 3. Melakukan yang ini Halaman pada suatu waktu sangat lambat karena panggilan MySQL (saya kira). Saya juga memiliki sekitar 2.500 posting forum untuk dihapus.

Saya agak takut untuk menghapus catatan dari database secara langsung.

Saya melihat modul yang disebut "penghapusan massal", tetapi untuk Drupal versi 5 dan tidak tersedia untuk versi 6.

10
John R

Anda dapat menggunakan Views Operasi Massal , modul yang memungkinkan untuk mengeksekusi operasi massal pada node, pengguna, komentar; itu juga memungkinkan untuk menerapkan operasi yang dipilih ke semua node, pengguna, atau komentar menggunakan Batch API . API batch memungkinkan pemrosesan formulir tersebar di beberapa permintaan halaman, sehingga memastikan pemrosesan tidak terganggu karena batas waktu PHP, sementara memungkinkan pengguna untuk menerima umpan balik tentang perkembangan operasi yang sedang berlangsung.

17
kiamlaluno

Cara untuk membunuh node ini sangat lambat, tetapi paling aman

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");
}

Untuk pengguna, dapatkah Anda secara terprogram menentukan pengguna yang ingin Anda hapus? Jika memungkinkan, Anda dapat menggunakan fungsi sebelumnya sebagai contoh untuk menghapus pengguna yang tidak dikunci.

3
dobeerman

Alih-alih membuat modul khusus untuk tugas ini, Anda dapat menggunakan skrip sederhana dan menjalankannya dengan Drush . Karena Anda perlu memproses banyak pengguna dan node, disarankan menggunakan Batch API (dan itu bisa digunakan dengan Drush ).

3
Pierre Buyle

Jika, seperti saya, Anda lebih suka pendekatan Python (jarang di sini, tapi mungkin), ini adalah cara yang transparan dan efektif untuk memperbaiki masalah ini:

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'

Langkah-langkahnya pada dasarnya:

  1. Masuk ke DB Anda dengan drush sql-cli -r $your-path-to-drupal -l $your-site-url
  2. Jalankan SQL di atas dengan kondisi Anda sendiri dan tempelkan hasilnya ke dalam variabel pengguna.
  3. Perbarui drupal lintasan dan nama situs Anda menjadi perintah drush
  4. Jalankan skrip dengan python delete-users.py

Saya yakin ada cara yang lebih baik untuk melakukan ini, tetapi ini adalah solusi yang diretas yang berfungsi dengan baik.

2
mlissner

Gunakan pengguna lanjut modul. Modul ini menambahkan tab "lanjutan" ke halaman manajemen pengguna. Di tab itu, Anda bisa memfilter pengguna berdasarkan atribut apa pun (peran, status, dll.) Dan pilih semua. Jika Anda memilih metode penghapusan pengguna sebagai menghapus pengguna dan menghapus semua konten, Anda juga dapat menghapus semua konten yang dibuat oleh mereka.

1
Sinan Erdem

Saya telah mengimplementasikan modul khusus untuk menghapus semua pengguna indrupal 7. Di area admin/people ada formulir baru untuk menyelesaikan operasi ini.

Terlalu dengan mabuk.

Apakah proyek kotak pasir. Terima kasih.

Tautan ke proyek.

1
lgrtm

Coba 2 modul ini untuk D6:

Pangkas Pengguna https://drupal.org/project/user_Prune dan Hapus Pengguna https://drupal.org/project/user_delete

User Prune memungkinkan Anda menghapus pengguna yang tidak aktif secara massal berdasarkan kriteria yang Anda tentukan.

Hapus Pengguna memungkinkan Anda menghapus pengguna dan menghapus semua konten yang dikirimkan termasuk node dan komentar

1
FreeScholar

Modul Hapus Semua bisa berguna.

Setelah terinstal, Anda dapat melakukannya, misalnya:

drush delete-all articles

atau

drush delete-all users

Versi Drupal 6 di dev tetapi dari catatan:

Semuanya harus berfungsi kecuali untuk menghapus cepat.

0
Mauro Sardu