POPRAVITE VELIKE tabele SQL: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]

WooCommerce postal je široko uporabljen modul spletnih trgovin. SEO, izdelek, upravljanje zalog, čista in intuitivna koda, preprost vmesnik za upravljanje in na tisoče vtičnikov, razvitih za Woo, so samo nekateri argumenti, za katere je vredno razmisliti, ko razmišljate o razvoju spletne trgovine.

Kot kateri koli CMS tudi Woo ni nobena izjema pri nenavadnostih, ki se lahko pojavijo v različnih scenarijih uporabe ali interakcije z drugimi vtičniki WordPress.
Na strežniku virov strojna oprema precej radodarno, to sem opazil storitev baze podatkov (mysqld) začne zahtevati skoraj 80-90% RAM-a. Precej resen problem, ker preprosto nisem razumel, od kod periodično prihaja do napake 110 (110: Povezava je potekla).
Ob natančnejšem pregledu procesov SQL sem ugotovil, da ima baza podatkov dve tabeli s precej velikimi količinami: wp_actionscheduler_actions si wp_actionscheduler_logs.

običajno načrtovane akcije za WooCommerce Action Scheduler po izvedbi jih je treba samodejno izbrisati. To se ne zgodi vedno in zataknejo se v wp_actionsscheduler_actions s statusom: ni, prekinjeno, dokler ali dokončanje.

Na zgornji sliki so tabele "wp_actionsscheduler"Imajo samo nekaj več kot 15 MB. Žal mi je, ker nisem bil navdihnjen za posnetek zaslona, ​​ko so ga 1.2 GB. Kljub temu je 15 MB dovolj za tabelo, ki vsebuje načrtovane akcije WooCommerce.
Iz tega izhajajo te "nabrekle" tabele WP-Cron vnosov ne izbriše ki imajo status "ni""prekinjeno"In"dokončanje“. Običajno je treba te vnose samodejno izbrisati iz baze podatkov.
Načrtovane akcije in njihovo stanje si lahko zelo enostavno ogledate WooCommerce →  Status →  Načrtovane akcije.

Kako očistiti žlebove "ni""prekinjeno"In"dokončanje"V wp_actionscheduler_actions si wp_actionscheduler_logs

Do baze dostopamo prek phpMyAdmin, nato pa v SQL po vrsti izvajamo ukazne vrstice:

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

Ko je tabela enkrat očiščena, še ne pomeni, da je težava rešena. Kot sem že rekel, je glavni vzrok onemogočanje storitve WP-Cron iz različnih razlogov. Tako vnosov s statusom "zombi" ni več mogoče izbrisati.
Zelo pomembno je vedeti, da če imate spletno trgovino na WooCommerce in je prek vtičnika povezana s Facebook Trgovinami "Facebook za WooCommerce", Samodejno sinhronizira izdelke WooCommerce z vašim računom v trgovinah Facebook. In to stori v približno 15 minutah. Če teh vnosov SQL ne nadzorujete, lahko dobite nekaj sto tisoč vrstic. "wc_facebook_regenerate_feed" v "wp_actionscheduler_actions".

Ta interval je v redu za trgovine, ki imajo veliko število naročil, zaloge izdelkov Facebook Shops pa je treba nenehno posodabljati. Če še vedno mislite, da je mogoče te sinhronizacije med Facebookom in vašo trgovino opraviti enkrat na 24 ur, vam lahko pomaga spodnja vrstica kode.

Odprite datoteko functions / php teme WordPress / WooCommerce, na kateri deluje vaša trgovina, in dodajte:

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

Nato lahko nastavimo interval enega tedna za samodejno čiščenje:

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

Ko shranite te spremembe, ne boste imeli težav z velikanskimi tabelami za "wp_actioncheduler_actions".

POPRAVITE VELIKE tabele SQL: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]

O avtorju

Stealth

Navdušen nad vsem pripomočkom in IT-jem, z veseljem pišem v tajnostisettings.com od leta 2006 in z vami rad odkrivam nove stvari o računalnikih in operacijskih sistemih macOS, Linux, Windows, iOS in Android.

Pustite komentar