Za duży wp_woocommerce_sessions w bazie danych [jak to naprawić]

Jak powiedziałem w innych artykułach, WooCommerce jest to coraz bardziej solidny i elastyczny moduł, który można przekształcić WordPress intr-un Idealny sklep internetowy dla początkującego biznesu.

Dla sklepu internetowego o rozmiarze modeste WooCommerce można go również uruchomić na „hostingu współdzielonym”, będąc w stanie z łatwością obsługiwać 5.000 produktów / 100 zamówień dziennie, jeśli używany motyw nie zużywa wielu zasobów i nie nadużywasz innych modułów (wtyczek).

Optymalizacja kodu źródłowego z (WP Themes), modułów (WP Plugins) i optymalizacja bazy danych są też dwa aspekty, na które musimy bardzo uważać.

Zauważyłem na drugi dzień, że sklep internetowy rozmiarów modezaczyna się zużywać bardzo dużo zasobów pamięci RAM i CPU na serwerze dedykowanym hojny. To wysokie zużycie zasobów doprowadziło do zwiększonego „obciążenia” serwera i długiego czasu ładowania stron w sklepie internetowym.

Gdy zauważymy nieuzasadnione duże obciążenie serwera WWW, dobrze jest dokładnie zbadać przyczyny przed podjęciem jakichkolwiek działań.

W bazie zauważyłem, że tabela "wp_woocommerce_sessions"To jest ogromne. Miał ponad 6 GB. Ogromny wolumen dla tabeli w bazie danych, który normalnie nie przekraczał łącznie 100 MB.

co to jest wp_woocommerce_sesje?

Jak możemy się domyślić z jego nazwiska, stół "wp_woocommerce_sessions”Zawiera sesje PHP (Sesje PHP).
Sesje te są działaniami użytkowników witryny (lub robotów internetowych) i przez większość czasu trafiają do bazy danych za pośrednictwem plików cookie. w wp_woocommerce_sesje to przechowywane dane o produktach umieszczonych przez użytkowników w koszyku, kuponach, opłatach za wysyłkę, dane klienta i wiele innych informacji związanych z procesem zamawiania produktów.

Sesje te są tworzone niezależnie od tego, czy użytkownik jest zarejestrowany w witrynie, czy też nie, i zwykle powinny wygasać i automatycznie usuwać po pewnym czasie.

Niestety nie zawsze zdarza się, że te sesje są usuwane, aw niektórych przypadkach pozostają na stałe zapisane w wp_woocommerce_sessions, co sprawia, że ​​ta tabela osiąga dość duży wolumen.

Jak usuwamy tabelę wp_woocommerce_sessions z SQL?

1. przejdź do Panel Użytkownika →  WooCommerce →  Rynek →  Tools (patka).

2. Przewiń w dół do opcji „Wyczyść sesje klientów“. Ostrożny! Usunięcie sesji klienta oznacza usunięcie wszystkich produktów, które włożyli do koszyka. Jeśli podczas usuwania tych sesji pojawią się klienci, którzy mają produkty w koszyku, znikną, a ewentualne zamówienie online nie zostanie zrealizowane.

3. Kliknij „Wyczyść” i potwierdź operację.

W tej chwili tabela „wp_woocommerce_sessions” jest puste, więc wszystkie sesje zakupowe klientów zostały usunięte.

Problem jest daleki od rozwiązania. Tabela SQL wp_woocommerce_sessions ponownie zbierze w nim dane i domyślnie ponownie uzyska proporcje, co nie jest pożądane.

Jak możemy powstrzymać trwałe przechowywanie sesji klienta w WooCommerce - wp_woocommerce_sessions?

Powyżej pokazałem, jak tabela „wp_woocommerce_sessions” z bazy danych, ale problem pojawi się ponownie po kilku dniach, gdy sesje klientów ponownie się zbiorą.

przed WooCommerce 2.5 sesje klientów były przechwytywane za pomocą plików cookie, aby później zapisać je w tabeli WordPress "wp_options".
W przypadku większych sklepów ta metoda często prowadziła do katastrof. „Wp_options„Bycie kluczowym stołem WordPress, używany przez opcje i ustawienia ogólne. Identyfikowanie i ręczne usuwanie sesji klienta przechowywanych w wp_options nie była to łatwa praca.
Wydajność WooCommerce nie były najlepsze, a skalowalność w czasie była wrażliwym punktem.

Wraz z uruchomieniem WooCommerce 2.5 w 2015 roku twórcy WooCommerce wprowadził nowy system obsługi i przechowywania sesji WooCommerceNa podstawie Menedżer sesji WP. Ten system doprowadził do powstania wp_woocommerce_sessions. Dedykowana tabela dla sesji klienta, która w bazie danych nie współdziała z innymi tabelami. W przypadku poważniejszych błędów straty powinny być minimalne.

Z tego co zaobserwowałem sklepy internetowe wystartowały wcześniej WooCommerce 2.5 i które z biegiem czasu otrzymywały ciągłe aktualizacje, mają pewne problemy z automatycznym usuwaniem sesji klienta. Najprawdopodobniej jest to błąd, który pojawił się w nowszej wersji WooCommerce 2.5 lub wtyczka WordPress / WooCommerce który nie nadąża za aktualizacjami.

W moim przypadku był to konflikt z funkcją dodaną do pliku functions.php tematu, a które zapobiega automatycznemu usuwaniu po czasie wygasłych sesji od woocommerce_sessions.
Jeśli napotkasz taki problem, musisz dokładnie zbadać wszystkie możliwe przyczyny. Błąd SQL, uprawnienia SQL, Cron Job, konflikty z innymi wtyczkami i wreszcie sprawdzaj zmiany wprowadzone przez Ciebie w kodzie w czasie.

widziałem to WooCommerce oferuje za jedyne 29 USD wtyczkę zdolną do zarządzania sesjami klientów. "Wyczyść koszyk i sesje dla WooCommerce“. Oczywiście oprócz zaplanowanego usuwania sesji, moduł posiada kilka narzędzi, które mogą Ci pomóc.

Prostsza opcja zaplanowane usunięcie „woocommerce_sessions„W odstępach jednodniowych, jest dostępny z następującym kodem w 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();
}

Zostaw komentarz, jeśli potrzebujesz pomocy lub masz inne rozwiązanie.

Pasjonat technologii, z przyjemnością piszę na StealthSettings.com od 2006 roku. Mam bogate doświadczenie w systemach operacyjnych: macOS, Windows i Linux, a także w językach programowania oraz platformach blogowych (WordPress) i dla sklepów internetowych (WooCommerce, Magento, PrestaShop).

jak » Ulepszenia i hacki » Za duży wp_woocommerce_sessions w bazie danych [jak to naprawić]

1 myśl w temacie “Zbyt duży wp_woocommerce_sessions w bazie danych [jak to naprawić]”

  1. Nie mam możliwości skasowania danych waży 500mb a mam limit 1000mb na minutę aby skasować wszystko znowu całkowicie zapełnione….jakieś rozwiązanie?

    Odpowiedz
Zostaw komentarz