Woocommerce Es ist zu einem immer häufiger genutzten Modul geworden Magazin online. SEO, Produkt- und Lagerverwaltung, sauberer und intuitiver Code, eine einfache Verwaltungsoberfläche und die Tausenden von Plugins, die für Woo entwickelt wurden, sind nur einige der Gründe, warum Woo eine Chance verdient, wenn Sie über die Entwicklung eines Online-Shops nachdenken.
Wie jedes CMS ist Woo nicht von den Kuriositäten befreit, die in verschiedenen Nutzungsszenarien oder bei der Interaktion mit anderen WordPress-Plugins auftreten können.
Auf einem Server mit Ressourcen Hardware recht großzügig, das ist mir aufgefallen Datenbankdienst (mysqld) fängt an, fast 80 anzufordern– 90 % des Arbeitsspeichers. Ein ziemlich ernstes Problem, weil ich einfach nicht verstanden habe, woher der Fehler 110 in regelmäßigen Abständen kommt (110: Zeitüberschreitung bei der Verbindung).
Bei näherer Betrachtung der SQL-Prozesse stellte ich fest, dass eine Datenbank zwei Tabellen mit recht beträchtlichen Volumina enthält: wp_actionscheduler_actions Und wp_actionscheduler_logs.
Im Mod normal geplante Aktionen Aber WooCommerce-Aktionsplaner Sie sollten nach ihrer Ausführung automatisch gelöscht werden. Dies geschieht nicht immer und sie bleiben in wp_actionsscheduler_actions mit dem Status blockiert: fehlgeschlagen, abgesagt, ausstehend oder vollständig.
Im Bild oben die Tabellen “wp_actionsscheduler” Sie haben nur etwas über 15 MB. Es tut mir leid, dass ich nicht inspiriert war, einen Screenshot zu machen, als sie es getan hatten1,2 GB. Dennoch sind 15 MB ziemlich viel für eine Tabelle, die geplante WooCommerce-Aktionen enthält.
Diese Tische “AUFGEBLASEN” es ergibt sich aus ca WP-Cron löscht keine Einträge Care-au-Status “fehlgeschlagen“, “abgesagt” Und “vollständig“. Normalerweise müssen diese Einträge automatisch aus der Datenbank gelöscht werden.
Die programmierten Aktionen und deren Status sind in sehr einfach zu erkennen Woocommerce →Status →Geplante Aktionen.
Wie reinigen wir die Abflüsse? “fehlgeschlagen“, “abgesagt” Und “vollständig” AUSwp_actionscheduler_actions Und wp_actionscheduler_logs
Wir greifen über phpMyAdmin auf die Datenbank zu und führen dann in SQL der Reihe nach die Befehlszeilen aus:
LÖSCHEN AUS „wp_actionscheduler_actions“ WO „status“ = „abgebrochen“
LÖSCHEN AUS „wp_actionscheduler_actions“ WHERE „status“ = „complete“
LÖSCHEN AUS „wp_actionscheduler_actions“ WHERE „status“ = „failed“
Sobald diese Tabelle bereinigt ist, bedeutet dies nicht, dass das Problem gelöst ist. Wie oben bereits erwähnt, ist die Hauptursache die Deaktivierung des WP-Cron-Dienstes aus verschiedenen Gründen. Also die Einträge mit Status “Zombie” Sie können nicht mehr gelöscht werden.
Es ist sehr wichtig zu wissen, ob Sie einen Online-Shop auf WooCommerce haben und dieser über das Plugin mit Facebook-Shops verbunden ist “Facebook für WooCommerce“, synchronisiert es WooCommerce-Produkte automatisch mit Ihrem Facebook-Shops-Konto. Und das tut er alle 15 Minuten. Wenn diese SQL-Einträge nicht kontrolliert werden, kann es zu mehreren Hunderttausend Zeilen kommen “wc_facebook_regenerate_feed” In “wp_actionscheduler_actions“.
Dieses Intervall ist für Geschäfte mit vielen Bestellungen in Ordnung und es ist notwendig, dass der Produktbestand in Facebook-Shops ständig aktualisiert wird. Wenn Sie immer noch der Meinung sind, dass diese Synchronisierungen zwischen Facebook und Ihrem Shop alle 24 Stunden durchgeführt werden können, kann Ihnen die folgende Codezeile helfen.
Öffnen Sie die Datei „functions.php“ des WordPress-/WooCommerce-Themes, auf dem Ihr Shop läuft, und fügen Sie Folgendes hinzu:
add_filter( 'wc_facebook_feed_generation_interval', function(){ return HOUR_IN_SECONDS * 24; } );
Als nächstes können wir ein Intervall von einer Woche für die automatische Reinigung festlegen:
add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge' );
Funktion wpb_action_scheduler_purge() {
return WEEK_IN_SECONDS;
}
Sobald diese Änderungen gespeichert sind, haben Sie keine Probleme mehr mit riesigen Tabellen “wp_actionscheduler_actions”.



@Stealth
Danke für die Hilfe. Du rettest meinen Tag und kaufst ein. Ich habe das erst nach einem Absturz meines Webshops entdeckt. Viele Plugins haben begonnen, ihre Ausgabe in dieser Tabelle abzulegen, und sie füllt sich… Das Wooping der 9,2-GB-Tabelle führte dazu, dass mein Gastgeber seine ansonsten gute Opp-Zeit aufgab. Jetzt trimme ich mit dem netten Code!
Nur eine Frage zum Fallseil dieses Tisches “wpb_action_scheduler_purge” Ist es ein Standard in der Datenbank oder muss ich es in etwas in meinem umbenennen (standardmäßig heißt meine Datenbank nicht „wp_“)’ ) oder ist es vielleicht eine Funktion?
Danke für die Hilfe und den superschönen Artikel
Gruß
Netzie