it-swarm-tr.com

yorumları toplu olarak silme

tüm yorumları bir kerede nasıl silebilirim? Düğümleri ve bulkdelete modülü ile nasıl yapıldığını gördüm, Belirli bir içerik türünün tüm düğümleri nasıl silinir? ama yorumlar için benzer bir çözüm arıyorum.

Veritabanında herhangi bir eser bırakmayan bir çözüm arıyorum. Views Toplu İşlemleri en iyi çözüm mü?

11
brian_d

AFAIK, VBO işi yapabilmeli, ancak yorumları silmek için kendim denemedim.

Başka bir yol, db'den gelen tüm sorguların bir listesini alan, yorum kimlikleri dizisi oluşturan ve bu diziyi işlevi. Bunun tamamlanması biraz zaman alabilir (sunucu performansına ve yorum sayısına bağlı olarak), bu nedenle, örneğin set_time_limit (http://php.net/manual/en/function) kullanarak bu şekilde çalışabilirsiniz. .set-time-limit.php) veya Drupal'ın toplu API'sı.

[güncelleme: Chris Cohen'in cevabına bakınız, örneğin bu yaklaşıma dayanan kod.]

7
marcvangend

Bu alternatif bir cevap değil, daha fazla marcvangend'in detayı, ama onun cevabı hakkında yorum yapamadım ve örnek kod bırakamadım. Devel'in yürütme kod bloğunu kullanan manuel yaklaşım biraz şöyle görünecektir:


$cids = db_select('comment', 'c')
  ->fields('c', array('cid'))
  ->execute()
  ->fetchCol();

comment_delete_multiple($cids);

Marcvangend'in belirttiği gibi, bu sunucunuzdaki yürütme süresiyle sınırlı olacaktır, bu nedenle çok fazla yorumunuz varsa geçici olarak yükseltmeniz gerekecektir. Dbtng yardımı için manarth ve instanceofjamie sayesinde.

7
Chris Cohen

Şahsen, Views Operations modülüne giderdim.

Bu modül, görüntülenen satırlarda toplu işlemlerin yürütülmesine izin vererek Görünümleri artırır. Bunu, her düğümün önünde bir onay kutusu göstererek ve uygulanabilecek işlemleri içeren bir seçim kutusu ekleyerek yapar. Drupal Çekirdek veya Kural eylemleri kullanılabilir.

2
Karl Jóhann

Bu cevap zaten listelenmiş bir cevaba benzer, ancak yaklaşık 27.000 yorum için bir 'bellek yetersiz hatasını' önlemek için değiştirdim. Yorum sayısına bağlı olarak yürütülmesi biraz zaman alacaktır. Yorumlar tablosunu kısaltmak iyi bir fikir olmayabilir; Drupal içeriğin silinmesini işlemek en iyisidir.

Bir PHP komut dosyası oluşturdum:

$cids = db_select('comment', 'c')
  ->fields('c', array('cid'))
  ->execute()
  ->fetchCol();

foreach($cids as $cid)
{
  comment_delete($cid);
}

... sonra senaryoyu Drush ile çalıştırdı

drush @my_alias php-script my_script.php
0
Parag

Dürüst olmak gerekirse bunu yapmak gerektiğinde ben sadece veritabanında yaptım. Yorumları siliyorsunuz, yorum istatistiklerini ve pufu düzeltiyorsunuz, tüm yorumlar gitti. Bazı garip bir şekilde yorumlarla etkileşimde bulunan modülleriniz varsa bunu yapmaktan kaçınırım, aksi takdirde önereceğim şey budur.

TRUNCATE TABLE yorumları

GÜNCELLEME node_comment_statistics SET comment_count = 0

0
G.Martin

Backup and Migrate modülünü kullanarak yaklaşık 45.000 yorumu sildi. 'Verileri aşağıdaki tablolardan hariç tut' içindeki gelişmiş kurulumda - önce Ctrl tuşuna basın, ardından listeden yorumu seçin - (burada gereksiz önbellek tabloları zaten seçili olduğundan dikkatli olun) - yedekleme - bu yedeklenmiş dosyadan geri yükleyin. Yaşa!

0
VivMajor

Bazı UI Araçları Aşağıdaki modülleri kurabilirsiniz

Görünümler - drupal.org/project/views

Her Drupal site ihtiyaçları, inanıyorum ... Arka uçta SQL üretir ve yapılandırılabilir ayarlar, filtreler, sıralama, sayfalama vb. İle sonuçları görüntüler.

VBO - http://drupal.org/project/views_bulk_operations Toplu işlemlere izin vermek için (yani, bu konu için yorumları silin)

Yönetim Görünümleri - http://drupal.org/project/admin_views Views ve VBO'dan yararlanın, orijinal contnet, yorum, kullanıcı yönetici sayfalarını menu_alter ile değiştirin ...

  1. Yukarıdaki modülleri etkinleştirdikten sonra yorum yöneticisi sayfasına geri dönün
  2. Tümünü seç ( dikkatli olun , tüm yorumları silmek istediğinizden emin olun ...)
  3. "Sil" i ve "Gönder" i seçin ( dikkatli olun , daha sonra onayla düğmesi yok ...)
0
Ck Poon

Genellikle yorumları veya düğümleri toplu olarak silmek için VBO kullanmanızı öneririm, ancak yüz binlerce yorumunuz olduğunda ve çok fazla zamanınız yoksa, onaylanmamış tüm yorumları silecek bir sql sorgusu benim durumumda DB 1.2 Gb alan alıyor bu yorumlarla ilgili tüm revizyonlar ve veriler ile birlikte

DELETE c, rcb, dcb
FROM
    comment AS c
JOIN field_revision_comment_body AS rcb ON (c.cid = rcb.entity_id)
JOIN field_data_comment_body AS dcb ON (rcb.entity_id = dcb.entity_id)
WHERE
    c. STATUS = 0
0
Octan