it-swarm.com.de

Löschen Sie 13000 Knoten

Ich habe ungefähr 13000 Knoten zum Löschen in einer Drupal 7-Site. Ich habe versucht, mit dem Modul Views Bulk Operations 500 Knoten gleichzeitig zu löschen, aber es tritt eine Zeitüberschreitung auf. Ich kann nur 50 Knoten gleichzeitig löschen.

Wie kann ich mehr als 50 Knoten gleichzeitig löschen?

9
chaithanya

VBO ist der De-facto-Standard für das Löschen von Massenknoten. Es gibt einfach keinen besseren Weg, dies zu tun.

Da VBO stapelweise verarbeitet, werden jeweils nur 1 (oder möglicherweise einige) Knoten gleichzeitig ausgeführt. Wenn Sie also Timeout-Fehler erhalten, beziehen sich diese auf das Löschen eines einzelnen Knotens und nicht auf den gesamten Stapelvorgang.

Die Standardauflösung für so etwas ist erhöhen Sie die PHP maximale Ausführungszeit , um dies zu kompensieren.

16
Clive

Installieren Sie Devel. Gehen Sie dann in D7 zu admin/config/development/generate/content und wählen Sie alle Inhaltstypen aus. Aktivieren Sie "Alle Inhalte löschen". Geben Sie 0 in "Wie viele Knoten möchten Sie generieren?"

Klicken Sie auf Generieren.

Dadurch werden alle Knoten gelöscht.

6
AgA

Verwenden Sie ein VBO und führen Sie es von Drush aus. Ich habe die folgende Methode verwendet, um nach dem Skalentest über 1,5 Millionen Knoten zu löschen.

  1. Erstellen Sie eine neue Ansicht mit einer Seite. Stellen Sie die Filter so ein, dass nur der Knotentyp angezeigt wird, den Sie löschen möchten.
  2. Fügen Sie ein neues Feld hinzu: "Massenoperationen: Inhalt"
  3. Aktivieren Sie das Kontrollkästchen neben "Element löschen" unter "Ausgewählte Massenvorgänge".
  4. Speichern Sie die Ansicht.
  5. Angenommen, Sie wissen, wie man Drush verwendet, führen Sie den folgenden Befehl aus: (Verwenden Sie einen Linux-Bildschirm, um ununterbrochen für große Datenmengen ausgeführt zu werden.)

drush vbo-execute my_view action :: views_bulk_operations_delete_item

Wobei my_view der Computername Ihrer Ansicht ist

Sie können auch drush vbo-list verwenden, um alle verfügbaren Ansichten und ihre Massenoperationen anzuzeigen.

Der VBO sollte jetzt in der Shell ausgeführt werden und Ihnen Feedback geben.

3
davewilly

Es gibt ein Alle löschen Modul da draußen. Es werden alle Knoten und/oder Benutzer von der Site gelöscht.

Es hat auch Drush-Unterstützung:

Beispiele:

drush delete-all article             Delect all article nodes.  
drush delete-all all                 Delete nodes of all types.  
drush delete-all --reset             Delete nodes of all types, and reset node, revision and comment counters.  
drush delete-all users               Delete users.
2
AjitS

Zum Löschen von Knoten in großer Anzahl (d. H. Bulk) wie in Ihrem Fall können Sie auch Bulk-Löschmodul verwenden.

Dadurch wird die Stapel-API zum Löschen der Knoten verwendet, um Zeitüberschreitungen oder Speicherprobleme beim Löschen von Tausenden von Knoten mit einem einzigen Aufruf von node_delete_multiple () zu vermeiden.

Abgesehen davon können Sie sogar versuchen Alle Module löschen , um alle Knoten eines Inhaltstyps zu löschen.

Hoffe das hilft.

0
neetu morwani

Wenn Sie Grund haben, dies per Code zu tun:

$query = new EntityFieldQuery();

$query->entityCondition('entity_type', 'node')
  ->propertyOrderBy('nid', 'DESC')
  ->range(1000, 1000);

$result = $query->execute();
node_delete_multiple(array_keys($result['node']));

Sie haben auch viele andere verfügbare Methoden , um zu löschende Knoten auszuwählen.

0
Bobík

Sie können Bobiks Rat befolgen und dies als Argument für eine "drush php-eval" verwenden, wenn Sie wirklich in einer Notlage sind, aber ich würde erwarten, dass die Leistung der von VBO ähnlich sein wird, während sie etwas schneller ist. Wenn die Leistung sehr langsam ist, können Sie sich ansehen, welche Module hook_node_delete aufrufen, indem Sie die Codebasis nach '_node_delete (' durchsuchen und dann bestimmen, ob Sie einige der Module deaktivieren können, die diesen Hook verwenden.

0

Sie können auch einen Stapelprozess dafür mit der BATCH-API erstellen und dies in diesem Stapelprozess einfach tun

foreach($nodes as $node){ node_delete($node[nid]);}

Das ist es. Sie sind hier fertig. Wenn Sie einen Drush-Befehl dafür erstellen möchten, können Sie ihn auch erstellen. Als Referenz schauen Sie bitte auf this .

0
Deepak Kumar

Verwenden Sie Views Bulk Operations - das war eine gute Idee. Verwenden Sie jedoch die Batch-API, anstatt die Operation direkt aufzurufen. Hier können Sie einen kurzen Artikel lesen darüber. Fehlende Dokumentation zu diesem Teil war ein bekanntes Problem .

0
Mołot