webentwicklung-frage-antwort-db.com.de

Werden 30 Posts/Sek. Für wp_delete_post als langsam angesehen?

Ich habe ungefähr 90.000 Beiträge in meinem WordPress und möchte die meisten davon mit einem Plugin löschen. Ich rufe alle IDs von den Posts ab, die gelöscht werden müssen, und führe dann die folgenden Schritte aus:

// $delete_posts contains all IDs
foreach ($delete_posts as $dp) {
    wp_delete_post($dp, true);
}

Ich sitze hier und frage mich, warum mein Plugin nicht wie erwartet funktioniert. Ich habe meine Datenbank mit PhpMyAdmin überprüft und festgestellt, dass die Posts sehr, sehr langsam gelöscht werden. Vielleicht 30 Beiträge pro Sekunde? Das ist definitiv zu langsam. Oder missbrauche ich diese Funktion, um Beiträge zu löschen?

1
beeef

Der Geschwindigkeitsfaktor einer Funktion, die sich mit Inhalten wie wp_insert_post() oder wp_delete_post() befasst, hängt stark von der Situation und dem Inhalt ab, mit dem sie sich befasst.

Lassen Sie uns ein einfaches Beispiel machen. Sie haben einen Beitrag, der ein Bild, ein Dutzend Tags, Kategorien, tausend benutzerdefinierte Felder, zugewiesene Taxonomien und hundert weitere enthält. Wenn Sie einen Befehl zum Löschen dieses Beitrags ausführen, versuchen Sie nicht nur, einen Permalink aus der Datenbank zu löschen, sondern auch Folgendes:

  • Lösen Sie die Miniaturansicht des Beitrags
  • Entfernen Sie ein Dutzend Begriffsbeziehungen
  • Führen Sie eine Schleife aus und verarbeiten Sie eine Million Metadaten
  • Und möglicherweise mehr.

Wenn Sie einen SQL-Befehl ausführen und nur die Daten des Posts aus der Datenbank entfernen (nicht empfohlen), kann dies zu einer Geschwindigkeit von Tausenden von Posts pro Sekunde führen. Das vollständige Entfernen des Inhalts und das Aufheben der Verknüpfung der Beziehungen ist jedoch schwierig.

3
Jack Johansson

Ja, 30 Sekunden sind definitiv zu viel, um den Beitrag zu löschen. Aber anscheinend ist das Problem nicht WordPress - es könnte sogar ein anderes Framework oder Kern-PHP sein. Meiner Meinung nach das Problem mit der Datenbank MySQL und deren Optimierung. Überprüfen Sie einfach, wie viele Datensätze Sie haben, wie ist ein Primärschlüssel (löschen Sie nach ID oder Post-Name?), Wie viele Spalten usw. Was wichtig ist, ist zu wissen, dass diese Tabelle schnell geöffnet wird. Beispielsweise löschten sie in unserem größten Projekt mit 3M-Datensätzen ziemlich schnell - http://merehead.com/projects/frevend/

0
Joe_19