Zu große wp_woocommerce_sessions in der Datenbank [How-To Fix]

Wie ich in anderen Artikeln sagte, WooCommerce ist ein immer robusteres und flexibleres Modul, das WordPress in ein Idealer Online-Shop für ein Start-up-Unternehmen.

Für einen bescheidenen Online-Shop kann WooCommerce auf einem "Shared Hosting" betrieben werden und kann problemlos 5.000 Produkte / 100 Bestellungen pro Tag unterstützen, wenn das verwendete Theme nicht viele Ressourcen verbraucht und keine anderen Module (Plugins) missbraucht.

Quellcode-Optimierung aus den (WP Themes), Modulen (WP Plugins) und Datenbankoptimierung Es gibt auch zwei Aspekte, bei denen wir sehr vorsichtig sein müssen.

Mir ist neulich aufgefallen, dass ein bescheidener Online-Shop startet viel RAM und CPU-Ressourcen auf einem dedizierten Server verbrauchen großzügig. Dieser hohe Ressourcenverbrauch führte zu einer erhöhten "Last" auf dem Server und einer langen Ladezeit der Online-Shop-Seiten.

Wenn wir eine ungerechtfertigte hohe Auslastung eines Webservers feststellen, ist es gut, die Ursachen sorgfältig zu untersuchen, bevor Maßnahmen ergriffen werden.

In der Datenbank ist mir aufgefallen, dass die Tabelle "wp_woocommerce_sessions"Es ist riesig. Es hatte über 6 GB. Ein riesiges Volumen für eine Tabelle in einer Datenbank, das normalerweise insgesamt 100 MB nicht überschreitet.

Was ist wp_woocommerce_sessions?

Wie wir aus seinem Namen erraten können, ist der Tisch "wp_woocommerce_sessions”Enthält PHP-Sitzungen (PHP-Sitzungen).
Diese Sitzungen sind Aktionen der Benutzer der Website (oder der Web-Roboter) und erreichen die Datenbank meistens über Cookies. In wp_woocommerce_sessions werden Daten über die von Nutzern in den Warenkorb gelegten Produkte, Coupons, Versandkosten, Kundendaten und viele andere Informationen im Zusammenhang mit dem Produktbestellprozess gespeichert.

Diese Sitzungen werden unabhängig davon erstellt, ob der Benutzer auf der Site registriert ist oder nicht und sollten normalerweise nach einer Weile automatisch ablaufen und gelöscht werden.

Leider ist es nicht immer der Fall, dass diese Sessions gelöscht werden und in einigen Fällen bleiben sie dauerhaft in wp_woocommerce_sessions gespeichert, was diese Tabelle ziemlich groß macht.

So löschen Sie die Tabelle wp_woocommerce_sessions von SQL?

1. gehe zu Dein Bereich →  WooCommerce →  Kategorie →  Tools (Tab).

2. Scrollen Sie nach unten zur Option "Kundensitzungen löschen“. Vorsichtig! Das Löschen von Kundensitzungen bedeutet das Löschen aller Produkte, die sie in den Warenkorb gelegt haben. Wenn sich beim Löschen dieser Sitzungen Kunden befinden, die Produkte im Warenkorb haben, verschwinden diese und die mögliche Online-Bestellung wird nicht abgeschlossen.

3. Klicken Sie auf „Löschen“ und bestätigen Sie den Vorgang.

Zu diesem Zeitpunkt ist die Tabelle "wp_woocommerce_sessions" leer, sodass alle Einkaufssitzungen von Kunden gelöscht wurden.

Das Problem ist noch lange nicht gelöst. Die SQL-Tabelle wp_woocommerce_sessions sammelt wieder Daten darin und nimmt standardmäßig wieder Proportionen an, was nicht wünschenswert ist.

Wie verhindern wir, dass Kundensitzungen dauerhaft in WooCommerce gespeichert werden - wp_woocommerce_sessions?

Wir haben oben gezeigt, wie die Tabelle "wp_woocommerce_sessions" aus der Datenbank geleert werden kann, aber das Problem tritt nach einigen Tagen wieder auf, in denen sich die Kundensitzungen wieder sammeln.

Vor WooCommerce 2.5 wurden Kundensitzungen über Cookies erfasst, die dann in der WordPress-Tabelle gespeichert wurden.“wp_options".
Bei größeren Geschäften hat diese Methode oft zu Katastrophen geführt. "Wp_options" ist eine wichtige Tabelle von WordPress, die von allgemeinen Optionen und Einstellungen verwendet wird. Identifizieren und manuelles Löschen von Client-Sitzungen, die in . gespeichert sind wp_options es war keine leichte Aufgabe.
Die WooCommerce-Leistung war nicht die beste und die Skalierbarkeit im Laufe der Zeit war ein sensibler Punkt.

Mit der Einführung von WooCommerce 2.5 im Jahr 2015 haben die WooCommerce-Entwickler ein neues WooCommerce-Sitzungshandhabungs- und -speichersystem eingeführt, basierend auf WP-Sitzungsmanager. Dieses System führte zur Entstehung wp_woocommerce_sessions. Eine dedizierte Tabelle für Client-Sitzungen, die in der Datenbank nicht mit anderen Tabellen interagiert. Bei größeren Fehlern sollten die Verluste minimal sein.

Wie ich festgestellt habe, haben Online-Shops, die vor WooCommerce 2.5 gestartet wurden und im Laufe der Zeit ständig aktualisiert wurden, einige Probleme mit dem automatischen Löschen von Client-Sitzungen. Höchstwahrscheinlich handelt es sich um einen Fehler, der in einer neueren Version von WooCommerce 2.5 oder einem WordPress / WooCommerce-Plugin aufgetreten ist, das mit den Updates nicht Schritt gehalten hat.

In meinem Fall war es ein Konflikt mit einer Funktion, die der Datei hinzugefügt wurde functions.php des Themas und welche verhindert das automatische Löschen nach einer Zeit abgelaufener Sitzungen von woocommerce_sessions.
Wenn Sie auf ein solches Problem stoßen, müssen Sie alle möglichen Ursachen sorgfältig untersuchen. SQL-Fehler, SQL-Berechtigungen, Cron-Job, Konflikte mit anderen Plugins und nicht zuletzt überprüfen Sie die von Ihnen vorgenommenen Änderungen im Code im Laufe der Zeit.

Wir haben gesehen, dass WooCommerce für nur 29 US-Dollar ein Plugin anbietet, mit dem Kundensitzungen verwaltet werden können. “Warenkorb und Sitzungen für WooCommerce leeren“. Natürlich verfügt das Modul neben dem geplanten Löschen von Sitzungen über mehrere Tools, die Ihnen helfen können.

Eine einfachere Möglichkeit geplante Löschung von „woocommerce_sessions„Im eintägigen Abstand, ist mit folgendem Code in . verfügbar functions.php:

// clean cart every day
if (!wp_next_scheduled('cron_wc_clean_cart')) {
    wp_schedule_event( time(), 'daily', 'cron_wc_clean_cart' );
}

add_action ( 'cron_wc_clean_cart', 'wc_clean_session_cart' );
function wc_clean_session_cart() {
    global  $wpdb;

    $wpdb->query( "TRUNCATE {$wpdb->prefix}woocommerce_sessions" );
    $wpdb->query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key='_woocommerce_persistent_cart_" . get_current_blog_id() . "';" );
    wp_cache_flush();
}

Hinterlassen Sie einen Kommentar, wenn Sie Hilfe benötigen oder eine andere Lösung haben.

Technikbegeistert teste und schreibe ich gerne Tutorials zu Betriebssystemen about macOSLinux, Windows, über WordPress, WooCommerce und LEMP Webserver-Konfiguration (Linux, NGINX, MySQL und PHP). ich schreibe weiter StealthSettings.com seit 2006, und ein paar Jahre später begann ich, auf iHowTo.Tips Tutorials und Neuigkeiten über Geräte im Ökosystem zu schreiben Apple: iPhoneiPad Apple Uhr, HomePod, iMac, MacBook, AirPods und Zubehör.

Hinterlasse einen Kommentar