it-swarm-tr.com

1600 kullanıcı ve 2500 yayın nasıl silinir?

Birkaç yıl önce bir siteyi Drupal 6.9 ile yapılandırdım ve sonra unuttum. sayfa sanırım MySQL çağrıları nedeniyle acı verici yavaş (sanırım) Ayrıca silmek için yaklaşık 2500 forum mesajları var.

Kayıtları doğrudan veritabanından silmek için biraz korkuyorum.

"Toplu silme" adlı bir modül gördüm, ancak Drupal sürüm 5 için ve sürüm 6 için mevcut değil).

10
John R

Düğümlerde, kullanıcılarda, yorumlarda toplu işlemler yürütmeye izin veren bir modül olan Views Bulk Operations kullanabilirsiniz; seçilen işlemi Toplu API kullanarak tüm düğümlere, kullanıcılara veya yorumlara uygulama izni verir. Toplu API, form işlemenin çeşitli sayfa istekleri üzerine yayılmasına izin verir, böylece bir PHP zaman aşımı nedeniyle işlemin kesintiye uğramamasını sağlarken, kullanıcının ilerlemesi hakkında geri bildirim almasına izin verir. devam eden operasyonlar.

17
kiamlaluno

Düğümleri öldürmenin bu yolu çok yavaş, ama en güvenli

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

Kullanıcılar için, kaldırmak istediğiniz kullanıcıyı programlı olarak belirleyebilir misiniz? Mümkünse, değiştirilmemiş kullanıcıları kaldırmak için önceki işlevi kullanabilirsiniz.

3
dobeerman

Bu görev için özel bir modül oluşturmak yerine, basit bir komut dosyası kullanabilir ve Drush ile çalıştırabilirsiniz. Çok sayıda kullanıcı ve düğümü işlemeniz gerektiğinden, Toplu İş API'sının kullanılması önerilir (ve Drush ile kullanılabilir ).

3
Pierre Buyle

Benim gibi, Python yaklaşımını tercih ediyorsanız (muhtemelen burada nadiren, ancak yine de), bu sorunu düzeltmenin şeffaf ve etkili bir yoludur:

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'

Adımlar temel olarak:

  1. drush sql-cli -r $your-path-to-drupal -l $your-site-url İle DB'nize giriş yapın
  2. Yukarıdaki SQL'i kendi konum koşulunuzla çalıştırın ve sonuçları users değişkenine yapıştırın.
  3. drupal yolunuzu ve site adınızı drush komutuna güncelleyin
  4. Komut dosyasını python delete-users.py İle çalıştırın

Eminim bunu yapmanın daha iyi bir yolu var, ama bu iyi işleyen saldırıya uğramış çözümüm.

2
mlissner

ileri düzey kullanıcı modülünü kullanın. Bu modül, kullanıcı yönetimi sayfasına "gelişmiş" bir sekme ekler. Bu sekmede, kullanıcıları herhangi bir özelliğe (rol, durum vb.) Göre filtreleyebilir ve tümünü seçebilirsiniz. Kullanıcıları silme ve tüm içeriği kaldırma olarak kullanıcıların silme yöntemini seçerseniz, onlar tarafından oluşturulan tüm içeriği de silebilirsiniz.

1
Sinan Erdem

Tüm kullanıcıları indrupal 7 silmek için özel bir modül uyguladım. Admin/people alanında bu işlemi tamamlamak için yeni bir form var.

Çok sarhoş.

Bir sanal alan projesidir. Thk.

Projeye bağlantı.

1
lgrtm

D6 için şu 2 modülü deneyin:

Kullanıcı Kurulama https://drupal.org/project/user_Prune ve Kullanıcı Silme https://drupal.org/project/user_delete

Kullanıcı Prune, etkin olmayan kullanıcıları belirttiğiniz ölçütlere göre toplu olarak silmenizi sağlar.

Kullanıcı Silme, bir kullanıcıyı silmenizi ve düğümler ve yorumlar dahil olmak üzere gönderilen tüm içeriği silmenizi sağlar

1
FreeScholar

Tümünü Sil modülü kullanışlı olabilir.

Kurulduktan sonra şunları yapabilirsiniz:

drush delete-all articles

veya

drush delete-all users

Dev'de Drupal 6 sürümü ancak notlardan:

Hızlı silme dışında her şey çalışıyor olmalıdır.

0
Mauro Sardu