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

Wie ich in anderen Artikeln sagte, WooCommerce Es handelt sich um ein zunehmend robustes und flexibles Modul, das sich verändern kann WordPress ein Idealer Online-Shop für ein Start-up-Unternehmen.

Für einen Online-Shop der Größe modeSte WooCommerce Es kann auch auf „Shared Hosting“ betrieben werden und problemlos 5.000 Produkte / 100 Bestellungen pro Tag unterstützen, wenn das verwendete Theme nicht viele Ressourcen verbraucht und Sie andere Module (Plugins) nicht missbrauchen.

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 es einen Online-Shop mit Größen gibt modees beginnt enorm viele RAM-Ressourcen zu verbrauchen und CPU auf einem dedizierten Server 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_Sitzungen ?

Wie wir aus seinem Namen erraten können, ist der Tisch "wp_woocommerce_sessions”Enthält PHP-Sitzungen (PHP-Sitzungen).
Diese Sitzungen sind Aktionen von Website-Benutzern (oder Web-Robots) und gelangen meist über Cookies in die Datenbank. In wp_woocommerceIn den Sitzungen werden Daten über die von Benutzern in den Warenkorb gelegten Produkte, Gutscheine, 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 kommt es nicht immer vor, dass diese Sitzungen gelöscht werden und in einigen Fällen bleiben sie dauerhaft in wp_ gespeichert.woocommerce_sessions, wodurch diese Tabelle ein ziemlich großes Volumen erreicht.

So löschen Sie die Tabelle wp_woocommerce_sessions von SQL?

1. gehe zu Dashboard →  WooCommerce →  Status →  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.

In diesem Moment ist die Tabelle „wp_woocommerce_sessions“ ist leer, daher wurden alle Kundeneinkaufssitzungen gelöscht.

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

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

Ich habe oben gezeigt, wie die Tabelle „wp_woocommerce_sessions“ aus der Datenbank, aber das Problem wird nach ein paar Tagen wieder auftreten, wenn sich wieder Client-Sitzungen sammeln.

Vor WooCommerce 2.5 wurden Clientsitzungen über Cookies erfasst, um später in der Tabelle gespeichert zu werden WordPress "wp_options".
Bei größeren Geschäften hat diese Methode oft zu Katastrophen geführt. „Wp_options”Der entscheidende Tisch von WordPress, verwendet von allgemeinen Optionen und Einstellungen. Identifizieren und manuelles Löschen von Clientsitzungen, die in gespeichert sind wp_options es war keine leichte Aufgabe.
Aufführungen WooCommerce Sie waren nicht die Besten und die Skalierbarkeit im Laufe der Zeit war ein heikler Punkt.

Mit dem Start WooCommerce 2.5 im Jahr 2015, die Entwickler WooCommerce führte ein neues Sitzungsverarbeitungs- und Speichersystem ein WooCommerceBasierend 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.

Nach allem, was ich beobachtet habe, wurden die Online-Shops schon früher eröffnet WooCommerce 2.5, die im Laufe der Zeit ständig aktualisiert wurden, weisen einige Probleme beim automatischen Löschen von Client-Sitzungen auf. Es handelt sich höchstwahrscheinlich um einen Fehler, der in einer neueren Version von aufgetreten ist WooCommerce 2.5 oder ein Plugin WordPress / WooCommerce 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.

das habe ich gesehen WooCommerce bietet für nur 29 US-Dollar ein Plugin zur Verwaltung von Kundensitzungen an. "Warenkorb und Sitzungen löschen für WooCommerce“. 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, schreibe ich seit 2006 gerne auf StealthSettings.com. Ich habe reichhaltige Erfahrung in Betriebssystemen: macOS, Windows und Linux, sowie in Programmiersprachen und Blogging-Plattformen (WordPress) und für Online-Shops (WooCommerce, Magento, PrestaShop).

So erreichen » Tweaks & Hacks » Zu groß wp_woocommerce_sessions in der Datenbank [How-To-Fix]

1 Gedanke zu „Zu großes wp_woocommerce_sessions in der Datenbank [How-To-Fix]“

  1. ich habe keine möglichkeit die daten zu löschen wiegt 500mb und ich habe ein limit von 1000mb pro minute zum löschen ist alles wieder komplett gefüllt… .irgendeine lösung?

    antworten
Hinterlasse einen Kommentar