POPRAVITI VELIKE SQL tablice: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Savjeti]

WooCommerce postao je široko korišteni modul online trgovine. SEO, proizvod, upravljanje zalihama, čist i intuitivan kod, jednostavno administracijsko sučelje i tisuće dodataka razvijenih za Woo, samo su neki od argumenata za koje vrijedi imati priliku kad razmišljate o razvoju internetske trgovine.

Kao i svaki CMS, Woo nije iznimka od neobičnosti koje se mogu pojaviti u različitim scenarijima upotrebe ili interakcije s drugim WordPress dodacima.
Na poslužitelju resursa hardver prilično velikodušno, primijetio sam to usluga baze podataka (mysqld) počinje zahtijevati gotovo 80-90% RAM-a. Prilično ozbiljan problem, jer jednostavno nisam razumio odakle povremeno dolazi do pogreške 110 (110: Isteklo je vrijeme veze).
Pomnijim uvidom u SQL procese otkrio sam da baza podataka ima dvije tablice s prilično velikim volumenima: wp_actionscheduler_actions si wp_actionscheduler_logs.

normalno zakazane akcije od WooCommerce planer akcije trebali bi se automatski izbrisati nakon izvršenja. To se ne događa uvijek i oni zapnu u wp_actionsscheduler_action sa statusom: Neuspjela, otkazan, u tijeku ili potpun.

Na gornjoj slici, tablice "wp_actionsscheduler"Imaju samo nešto više od 15 MB. Žao mi je što nisam bio nadahnut za snimku zaslona kad su oni to učinili 1.2 GB. Bez obzira na to, 15 MB je dovoljno za tablicu koja sadrži programirane akcije WooCommercea.
Iz toga proizlaze ove "natečene" tablice WP-Cron ne briše unose koji imaju status "Neuspjela","otkazan"A"potpun“. Obično bi se ti unosi trebali automatski brisati iz baze podataka.
Zakazane akcije i njihovo stanje mogu se vrlo lako vidjeti u WooCommerce →  status →  Zakazane radnje.

Kako očistiti oluke "Neuspjela","otkazan"A"potpun"U wp_actionscheduler_actions si wp_actionscheduler_logs

Pristupimo bazi podataka putem phpMyAdmin, a zatim u SQL redom izvršavamo naredbene retke:

DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed'

Jednom kad se ova tablica očisti, ne znači da je problem riješen. Kao što sam gore rekao, glavni uzrok je onemogućavanje usluge WP-Cron iz različitih razloga. Stoga se unosi sa statusom "zombi" više ne mogu brisati.
Vrlo je važno znati ako imate internetsku trgovinu na WooCommerceu, a povezana je s Facebook trgovinama putem dodatka "Facebook za WooCommerce", Automatski sinhronizira WooCommerce proizvode s vašim Facebook računom trgovina. I to učini za otprilike 15 minuta. Ako se ti SQL unosi ne kontroliraju, možete dobiti nekoliko stotina tisuća redaka. "wc_facebook_regenerate_feed"U"wp_actionscheduler_actions".

Ovaj interval je u redu za trgovine koje imaju velik broj narudžbi, a zalihe proizvoda Facebook trgovina moraju se stalno ažurirati. Ako i dalje mislite da se ove sinkronizacije između Facebooka i vaše trgovine mogu obaviti svaka 24 sata, može vam pomoći redak donjeg koda.

Otvorite datoteku functions / php teme WordPress / WooCommerce na kojoj radi vaša trgovina i dodajte:

add_filter( 'wc_facebook_feed_generation_interval', function(){ return HOUR_IN_SECONDS * 24; } );

Dalje možemo postaviti interval od tjedan dana za automatsko čišćenje:

add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge' );
function wpb_action_scheduler_purge() {
 return WEEK_IN_SECONDS;
}

Jednom kada spremite ove promjene nećete imati problema s gigantskim tablicama za "wp_actioncheduler_actions".

POPRAVITI VELIKE SQL tablice: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Savjeti]

O autoru

potajno

Zaljubljen u sve gadgete i IT, pišem sa zadovoljstvom u stealthusettings.com od 2006. godine i volim s vama otkriti nove stvari o računalima i operativnim sustavima macOS, Linux, Windows, iOS i Android.

Ostavite komentar