podle

1

Opravte obrovské tabulky SQL: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce tipy]

Opravte obrovské tabulky SQL: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce tipy]

1

WooCommerce stal se stále více velmi používaným modulem časopis online. SEO, správa produktů a zásob, čistý a intuitivní kód, jednoduché administrační rozhraní a tisíce pluginů vyvinutých pro Woo, to jsou jen některé z důvodů, proč si zaslouží šanci, když uvažujete o vývoji internetového obchodu.

Jako každý CMS není Woo osvobozen od zvláštností, které se mohou objevit v různých scénářích použití nebo interakce s jinými pluginy WordPress.
Na serveru se zdroji železářské zboží docela velkorysý, všiml jsem si toho databázová služba (mysqld) začíná požadovat téměř 80– 90 % paměti RAM. Docela vážný problém, protože jsem prostě nepochopil, odkud chyba 110 pravidelně pochází (110: Vypršel časový limit připojení).
Při bližším zkoumání SQL procesů jsem zjistil, že jedna databáze má dvě tabulky s poměrně značnými objemy: wp_actionscheduler_actions a wp_actionscheduler_logs.

V normálním modu naplánované akce ale Plánovač akcí WooCommerce měly by se po provedení automaticky smazat. To se nestává vždy a zůstávají blokovány ve wp_actionsscheduler_actions se stavem: nepodařilo, zrušeno, čeká na vyřízení nebo kompletní.

Na obrázku výše tabulky “wp_actionsscheduler” mají jen něco málo přes 15 MB. Omlouvám se, že jsem nebyl inspirován k pořízení snímku obrazovky, když měli1,2 GB. I tak je 15 MB na tabulku, která obsahuje naplánované akce WooCommerce, poměrně hodně.
Tyto tabulky “NAFOUKNUTÝ” vyplývá z ca WP-Cron nemaže záznamy péče o stav “nepodařilo“, “zrušeno” a “kompletní“. Za normálních okolností musí být tyto položky automaticky odstraněny z databáze.
Naprogramované akce a jejich stav lze velmi snadno zobrazit v WooCommercePostaveníNaplánované akce.

Jak čistíme odtoky? “nepodařilo“, “zrušeno” a “kompletní” Zwp_actionscheduler_actions a wp_actionscheduler_logs

K databázi přistupujeme přes phpMyAdmin, poté v SQL postupně spouštíme příkazové řádky:

DELETE FROM `wp_actionscheduler_actions` KDE `status` = 'zrušeno'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete'
DELETE FROM `wp_actionscheduler_actions` KDE `status` = 'failed'

Jakmile je tato tabulka vyčištěna, neznamená to, že je problém vyřešen. Jak jsem uvedl výše, hlavní příčinou je z různých důvodů deaktivace služby WP-Cron. Tedy záznamy se stavy “zombie” již je nelze smazat.
Je velmi důležité vědět, že pokud máte internetový obchod na WooCommerce a je propojen s Facebook Shops prostřednictvím pluginu “Facebook pro WooCommerce“, automaticky synchronizuje produkty WooCommerce s vaším účtem Obchody na Facebooku. A dělá to každých 15 minut. Pokud tyto položky SQL nejsou kontrolovány, můžete získat několik stovek tisíc řádků “wc_facebook_regenerate_feed” v “wp_actionscheduler_actions“.

Tento interval je v pořádku pro obchody, které mají velké množství objednávek a je nutné, aby skladové zásoby produktů ve Facebook Shops byly neustále aktualizovány. Pokud si stále myslíte, že tyto synchronizace mezi Facebookem a vaším obchodem lze provést jednou za 24 hodin, může vám pomoci řádek kódu níže.

Otevřete soubor functions.php motivu WordPress / WooCommerce, na kterém váš obchod běží, a přidejte:

add_filter( 'interval_generace_zdroje_wc_facebooku', function(){ return HODINY_V_SEKUNDÁCH * 24; } );

Dále můžeme nastavit interval jednoho týdne pro automatické čištění:

add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge');
function wpb_action_scheduler_purge() {
 návrat WEEK_IN_SECONDS;
}

Po uložení těchto změn již nebudete mít problémy s obřími stoly “wp_actionscheduler_actions”.

Opravte obrovské tabulky SQL: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce tipy]

Mohlo by vás také zajímat...

Jedna myšlenka “Opravte obrovské tabulky SQL: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce tipy]

  1. Netzie říká:

    @Stealth
    Díky za pomoc. Ušetříte mi den a nakupujete. Zjistil jsem to až po pádu mého e-shopu. Mnoho pluginů začalo ukládat svůj výstup do této tabulky a ta se zaplňuje… Přehrání 9,2GB tabulky způsobilo, že můj hostitel se vzdal svého jinak skvělého času. Teď stříhám s pěkným kódem!
    Jen otázka na padací lano u tohoto stolu “wpb_action_scheduler_purge” je to výchozí v db nebo to musím přejmenovat na něco v mém (ve výchozím nastavení se moje db nenazývá 'wp_’ ) nebo je to snad funkce?
    Děkuji za pomoc a super pěkný článek

    Pozdrav
    Netzie

Zanechat odpověď

Vaše emailová adresa nebude zveřejněna. Požadovaná pole jsou označena *