Muito grande wp_woocommerce_sessions no banco de dados [como corrigir]

Como eu disse em outros artigos, WooCommerce é um módulo cada vez mais robusto e flexível, capaz de transformar WordPress um Loja online ideal para uma empresa iniciante.

Para uma loja online de tamanho modeste WooCommerce também pode rodar em "hospedagem compartilhada", podendo suportar facilmente 5.000 produtos/100 pedidos por dia, caso o tema utilizado não consuma muitos recursos e você não abuse de outros módulos (plugins).

Otimização do código fonte dos (Temas WP), módulos (Plugins WP) e otimização de banco de dados há também dois aspectos com os quais devemos ter muito cuidado.

Notei outro dia que uma loja online de tamanhos modecomeça consumir enormemente muitos recursos de RAM e CPU em um servidor dedicado generoso. Esse alto consumo de recursos levou a um aumento da "carga" no servidor e a um longo tempo de carregamento das páginas da loja onine.

Quando percebemos uma carga injustificadamente alta em um servidor da web, é bom investigar cuidadosamente as causas antes de realizar qualquer ação.

No banco de dados notei que a tabela "wp_woocommerce_sessions"É enorme. Ele tinha mais de 6 GB. Um grande volume para uma tabela em um banco de dados que normalmente não excede 100 MB no total.

o que é wp_woocommerce_sessões?

Como podemos adivinhar pelo nome dele, a mesa "wp_woocommerce_sessions”Contém sessões PHP (Sessões PHP).
Essas sessões são ações dos usuários do site (ou robôs da web) e na maioria das vezes chegam ao banco de dados por meio de cookies. Em wp_woocommerce_sessões são armazenados dados sobre os produtos colocados pelos usuários no carrinho de compras, cupons, taxas de envio, dados do cliente e muitas outras informações relacionadas ao processo de pedido do produto.

Essas sessões são criadas independentemente de o usuário estar registrado ou não no site e, normalmente, expiram e são excluídas automaticamente após algum tempo.

Infelizmente, nem sempre acontece que essas sessões sejam apagadas e, em alguns casos, ficam permanentemente armazenadas em wp_woocommerce_sessions, o que faz com que esta tabela atinja um volume bastante grande.

Como deletar a mesa wp_woocommerce_sessions do SQL?

1. ir a Painel →  WooCommerce →  Status →  Ferramentas (aba).

2. Role para baixo até a opção "Limpar sessões de clientes“. Cuidadoso! Excluir sessões de clientes significa excluir todos os produtos que eles colocaram no carrinho de compras. Se durante a exclusão dessas sessões houver clientes que tenham produtos no carrinho, eles desaparecerão e o possível pedido online não será concluído.

3. Clique em "Limpar" e confirme a operação.

Neste momento a tabela "wp_woocommerce_sessions" está vazio, então todas as sessões de compras do cliente foram excluídas.

O problema está longe de ser resolvido. Tabela SQL wp_woocommerce_sessions coletará dados novamente e, por padrão, obterá proporções novamente, o que não é desejável.

Como impedimos que as sessões do cliente sejam permanentemente armazenadas em WooCommerce - wp_woocommerce_sessions?

Eu mostrei acima como a tabela "wp_woocommerce_sessions" do banco de dados, mas o problema aparecerá novamente após alguns dias, quando as sessões do cliente forem reunidas novamente.

Antes WooCommerce 2.5, as sessões do cliente foram capturadas através de cookies, para serem salvas na tabela posteriormente WordPress "wp_options".
Para lojas maiores, esse método geralmente leva a desastres. “Wp_options“Sendo a mesa vital de WordPress, usado por opções e configurações gerais. Identificando e excluindo manualmente as sessões do cliente armazenadas em wp_options não foi um trabalho fácil.
performances WooCommerce eles não eram os melhores e a escalabilidade ao longo do tempo era um ponto sensível.

Com o lançamento WooCommerce 2.5 em 2015, os desenvolvedores WooCommerce introduziu um novo sistema de manipulação e armazenamento de sessão WooCommercecom base em Gerente de Sessões WP. Este sistema levou ao surgimento wp_woocommerce_sessions. Uma tabela dedicada para sessões de cliente, que no banco de dados não interage com outras tabelas. Em caso de erros graves, as perdas devem ser mínimas.

Pelo que tenho observado, as lojas online lançadas antes WooCommerce 2.5 e que receberam atualizações constantes ao longo do tempo, apresentam alguns problemas quanto à exclusão automática de sessões de clientes. Provavelmente é um bug que apareceu em uma versão mais recente do WooCommerce 2.5 ou um plug-in WordPress / WooCommerce que não acompanhou as atualizações.

No meu caso, foi um conflito com uma função adicionada ao arquivo functions.php do tema, e qual impede a exclusão automática após um período de sessões expiradas de woocommerce_sessions.
Se você está enfrentando esse problema, deve investigar cuidadosamente todas as causas possíveis. Erro de SQL, permissões de SQL, Cron Job, conflitos com outros plug-ins e, por último, mas não menos importante, verifique as mudanças que você fez no código ao longo do tempo.

eu vi isso WooCommerce oferece por apenas $ 29 um plug-in capaz de gerenciar sessões de clientes. "Limpar Carrinho e Sessões para WooCommerce“. Claro, além da exclusão programada de sessões, o módulo possui várias ferramentas que podem ajudá-lo.

Uma opção mais simples exclusão programada de “woocommerce_sessions”Em intervalos de um dia, está disponível com o seguinte código em 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();
}

Deixe um comentário se precisar de ajuda ou tiver outra solução.

Apaixonado por tecnologia, escrevo com prazer no StealthSettings.com desde 2006. Tenho uma ampla experiência em sistemas operacionais: macOS, Windows e Linux, assim como em linguagens de programação e plataformas de blogs (WordPress) e para lojas online (WooCommerce, Magento, PrestaShop).

Como » Ajustes e Hacks » Muito grande wp_woocommerce_sessions no banco de dados [como corrigir]

1 pensou em “Wp_ muito grandewoocommerce_sessions no banco de dados [como corrigir]"

  1. Não tenho como deletar os dados pesa 500mb e tenho um limite de 1000mb por minuto para deletar tudo está completamente preenchido novamente… .alguma solução?

    Resposta
Deixe um comentário