wp_ troppo grandewoocommerce_sessions nel database [Come risolvere]

Come ho detto in altri articoli, WooCommerce è un modulo sempre più robusto e flessibile, capace di trasformarsi WordPress un Negozio online ideale per una start-up.

Per un negozio online di dimensioni modeste, WooCommerce può essere eseguito anche su "hosting condiviso", potendo supportare facilmente 5.000 prodotti/100 ordini al giorno, se il tema utilizzato non consuma molte risorse e non si abusa di altri moduli (plugin).

Ottimizzazione del codice sorgente da (WP Themes), moduli (WP Plugins) e ottimizzazione del database ci sono anche due aspetti a cui dobbiamo prestare molta attenzione.

Ho notato l'altro giorno che un negozio online di taglie modeInizia consumare enormi risorse di RAM e CPU su un server dedicato generoso. Questo elevato consumo di risorse ha comportato un aumento del "carico" sul server e un lungo tempo di caricamento delle pagine del negozio online.

Quando notiamo un carico ingiustificatamente elevato su un server web, è bene indagare attentamente sulle cause prima di intraprendere qualsiasi azione.

Nel database ho notato che la tabella "wp_woocommerce_sessions"È enorme. Aveva oltre 6 GB. Un volume enorme per una tabella in un database che normalmente non superava i 100 MB in totale.

cos'è wp_woocommerce_sessioni ?

Come si può intuire dal suo nome, il tavolo"wp_woocommerce_sessions”Contiene sessioni PHP (Sessioni PHP).
Queste sessioni sono azioni degli utenti del sito (o web robot) e il più delle volte finiscono nel database tramite i cookie. In wp_woocommerce_sessions sono i dati memorizzati sui prodotti inseriti dagli utenti nel carrello, coupon, spese di spedizione, dati dei clienti e molte altre informazioni relative al processo di ordinazione dei prodotti.

Queste sessioni vengono create indipendentemente dal fatto che l'utente sia registrato al sito e normalmente dovrebbero scadere e cancellarsi automaticamente dopo un po'.

Purtroppo non sempre queste sessioni vengono cancellate e, in alcuni casi, rimangono memorizzate in modo permanente in wp_woocommerce_sessions, che fa sì che questa tabella raggiunga un volume abbastanza grande.

Come eliminare la tabella wp_woocommerce_sessions da SQL?

1. andare a Performance modelli/hostess →  WooCommerce →  Stato dei servizi →  Strumenti (scheda).

2. Scorri verso il basso fino all'opzione "Cancella sessioni cliente customer“. Attento! Eliminare le sessioni dei clienti significa eliminare tutti i prodotti che hanno inserito nel carrello. Se durante l'eliminazione di queste sessioni ci sono clienti che hanno prodotti nel carrello, questi scompariranno e l'eventuale ordine online non verrà completato.

3. Fare clic su "Cancella" e confermare l'operazione.

In questo momento la tabella "wp_woocommerce_sessions" è vuoto, quindi tutte le sessioni di acquisto dei clienti sono state eliminate.

Il problema è tutt'altro che risolto. tabella SQL wp_woocommerce_sessions raccoglierà nuovamente i dati e per impostazione predefinita otterrà nuovamente le proporzioni, il che non è auspicabile.

Come impedire che le sessioni client vengano memorizzate in modo permanente in WooCommerce - wp_woocommerce_sessions?

Ho mostrato sopra come la tabella "wp_woocommerce_sessions" dal database, ma il problema si ripresenterà dopo alcuni giorni quando le sessioni client si riuniranno nuovamente.

Prima WooCommerce 2.5, le sessioni client venivano acquisite tramite cookie, per essere successivamente salvate nella tabella WordPress "wp_options".
Per i negozi più grandi, questo metodo ha spesso portato a disastri. “Wp_options”Essere il tavolo vitale di WordPress, utilizzato da opzioni e impostazioni generali. Identificazione ed eliminazione manuale delle sessioni client archiviate in wp_options non è stato un lavoro facile.
spettacoli WooCommerce non erano il massimo e la scalabilità nel tempo era un punto sensibile.

Con il lancio WooCommerce 2.5 nel 2015, gli sviluppatori WooCommerce ha introdotto un nuovo sistema di gestione e archiviazione delle sessioni WooCommerceSulla base Gestore sessioni WP. Questo sistema ha portato alla nascita wp_woocommerce_sessions. Una tabella dedicata per le sessioni client, che nel database non interagisce con altre tabelle. In caso di errori gravi, le perdite dovrebbero essere minime.

Da quello che ho osservato, i negozi online sono stati lanciati prima WooCommerce 2.5 e che hanno ricevuto costanti aggiornamenti nel tempo, presentano alcuni problemi per quanto riguarda la cancellazione automatica delle sessioni client. Molto probabilmente è un bug apparso su una versione più recente di WooCommerce 2.5 o un plug-in WordPress / WooCommerce che non ha tenuto il passo con gli aggiornamenti.

Nel mio caso era un conflitto con una funzione aggiunta al file functions.php del tema, e che impedisce la cancellazione automatica dopo un periodo di sessioni scadute da woocommerce_sessions.
Se stai affrontando un problema del genere, devi indagare attentamente su tutte le possibili cause. Errore SQL, permessi SQL, Cron Job, conflitti con altri plugin e, ultimo ma non meno importante, controlla le modifiche apportate da te al codice nel tempo.

l'ho visto WooCommerce offre a soli $ 29 un plug-in in grado di gestire le sessioni dei clienti. "Cancella carrello e sessioni per WooCommerce“. Ovviamente, oltre alla cancellazione programmata delle sessioni, il modulo dispone di diversi strumenti che potrebbero aiutarti.

Un'opzione più semplice cancellazione programmata di "woocommerce_sessions”A intervalli di un giorno, è disponibile con il seguente codice in 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();
}

Lascia un commento se hai bisogno di aiuto o hai un'altra soluzione.

Appassionato di tecnologia, scrivo con piacere su StealthSettings.com dal 2006. Ho un'ampia esperienza nei sistemi operativi: macOS, Windows e Linux, nonché nei linguaggi di programmazione e nelle piattaforme di blogging (WordPress) e per i negozi online (WooCommerce, Magento, PrestaShop).

Come » Tweaks & Hacks » wp_ troppo grandewoocommerce_sessions nel database [Come risolvere]

1 pensiero su “Troppo grande wp_woocommerce_sessions nel database [Come risolvere]"

  1. Non ho modo di eliminare i dati che pesano 500 MB e ho un limite di 1000 MB al minuto per eliminare tutto è completamente riempito di nuovo… .qualche soluzione?

    Rispondi
Lascia un tuo commento