por

1

Corrija grandes tabelas SQL: wp_actionscheduler_actions & wp_actionScheduler_logs [dicas de wooCommerce]

Corrija grandes tabelas SQL: wp_actionscheduler_actions & wp_actionScheduler_logs [dicas de wooCommerce]

1

WooCommerce tornou-se um módulo muito utilizado por cada vez mais revista on-line. SEO, gerenciamento de produtos e estoque, código limpo e intuitivo, interface de administração simples e os milhares de plugins desenvolvidos para Woo, são apenas alguns dos motivos pelos quais ele merece uma chance quando você pensa em desenvolver uma loja online.

Como qualquer CMS, o Woo não está isento das estranhezas que podem surgir em diferentes cenários de uso ou interação com outros plugins do WordPress.
Em um servidor com recursos hardware bastante generoso, notei que serviço de banco de dados (mysqld) começa a solicitar quase 80– 90% de RAM. Um problema bastante sério, porque simplesmente não entendi de onde vem o erro 110 periodicamente (110: A conexão expirou).
Após uma inspeção mais detalhada dos processos SQL, descobri que um banco de dados possui duas tabelas com volumes bastante consideráveis: wp_actionscheduler_actions e wp_actionscheduler_logs.

No modo normal ações programadas mas Agendador de ações WooCommerce eles devem ser excluídos automaticamente após serem executados. Isso nem sempre acontece e eles permanecem bloqueados em wp_actionsscheduler_actions com o status: fracassado, cancelado, pendente ou completo.

Na imagem acima, as tabelas “wp_actionsscheduler” eles só têm um pouco mais de 15 MB. Me desculpe, não fiquei inspirado para tirar uma captura de tela quando eles tinham1,2GB. Mesmo assim, 15 MB é bastante para uma tabela que contém ações agendadas do WooCommerce.
Essas tabelas “INFLADO” resulta de ca WP-Cron não exclui entradas cuidado com o status “fracassado“, “cancelado” e “completo“. Normalmente essas entradas devem ser excluídas automaticamente do banco de dados.
As ações programadas e seu status podem ser visualizados facilmente em WooCommerceStatusAções agendadas.

Como limpamos os ralos? “fracassado“, “cancelado” e “completo” DEwp_actionscheduler_actions e wp_actionscheduler_logs

Acessamos o banco de dados através do phpMyAdmin, depois no SQL executamos as linhas de comando sucessivamente:

EXCLUIR DE `wp_actionscheduler_actions` ONDE `status` = 'cancelado'
EXCLUIR DE `wp_actionscheduler_actions` ONDE `status` = 'completo'
EXCLUIR DE `wp_actionscheduler_actions` ONDE `status` = 'falhou'

Uma vez limpa esta tabela, isso não significa que o problema esteja resolvido. Como disse acima, a principal causa é a desativação do serviço WP-Cron por diversos motivos. Assim, as entradas com status “zumbi” eles não podem mais ser excluídos.
É muito importante saber que se você tem uma loja online no WooCommerce, e ela está conectada às Lojas do Facebook através do plugin “Facebook para WooCommerce“, ele sincroniza automaticamente os produtos WooCommerce com sua conta do Facebook Shops. E ele faz isso a cada 15 minutos. Se essas entradas SQL não forem controladas, você poderá obter centenas de milhares de linhas “wc_facebook_regenerate_feed” em “wp_actionscheduler_actions“.

Este intervalo é adequado para lojas que possuem grande número de pedidos e é necessário que o estoque de produtos nas Lojas do Facebook esteja constantemente atualizado. Se você ainda acha que essas sincronizações entre o Facebook e sua loja podem ser feitas uma vez a cada 24 horas, a linha de código abaixo pode te ajudar.

Abra o arquivo functions.php do tema WordPress/WooCommerce que sua loja está rodando e adicione:

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

A seguir, podemos definir um intervalo de uma semana para limpeza automática:

add_filter('action_scheduler_retention_period', 'wpb_action_scheduler_purge');
função wpb_action_scheduler_purge() {
 retornar SEMANA_EM_SEGUNDOS;
}

Depois que essas alterações forem salvas, você não terá mais problemas com tabelas gigantes para “wp_actionscheduler_actions”.

Corrija grandes tabelas SQL: wp_actionscheduler_actions & wp_actionScheduler_logs [dicas de wooCommerce]

Você também pode estar interessado em...

Um pensamento em “Corrija grandes tabelas SQL: wp_actionscheduler_actions & wp_actionScheduler_logs [dicas de wooCommerce]

  1. Netzie diz:

    @Stealth
    Obrigado pela ajuda. Você salva meu dia e faz compras. Só descobri isso depois de uma falha na minha loja virtual. Muitos plugins começaram a despejar sua saída nessa tabela e ela fica lotada… A tabela de 9,2 GB fez com que meu host desistisse de seu bom tempo de operação. Agora eu aparo com o código legal!
    Só uma pergunta sobre soltar corda nesta mesa “wpb_action_scheduler_purge” é um padrão no banco de dados ou tenho que renomeá-lo para algo no meu (por padrão meu banco de dados não é chamado 'wp_’ ) ou talvez seja uma função?
    Obrigado pela ajuda e pelo artigo super legal

    Saudações
    Netzie

Deixe uma resposta

Seu endereço de e-mail não será publicado. Os campos necessários estão marcados *