wp_woocommerce_sessions terlalu besar di Database [Cara Memperbaikinya]

Seperti yang saya katakan di artikel lain, WooCommerce adalah modul yang semakin kuat dan fleksibel, mampu mengubah WordPress menjadi a Toko online yang ideal untuk bisnis pemula.

Untuk toko online sederhana, WooCommerce dapat dijalankan di "hosting bersama", dan dapat dengan mudah mendukung 5.000 produk / 100 pesanan per hari, jika tema yang digunakan tidak menghabiskan banyak sumber daya dan tidak menyalahgunakan modul (plugin) lain.

Pengoptimalan kode sumber Tema WP, modul (Plugin WP) dan pengoptimalan basis data ada juga dua aspek yang harus sangat kita perhatikan.

Saya perhatikan beberapa hari yang lalu bahwa toko online sederhana mulai untuk mengkonsumsi banyak RAM dan sumber daya CPU pada server khusus murah hati. Konsumsi sumber daya yang tinggi ini menyebabkan peningkatan "beban" di server dan waktu pemuatan halaman toko online yang lama.

Ketika kami melihat beban tinggi yang tidak dapat dibenarkan pada server web, ada baiknya untuk menyelidiki penyebabnya dengan cermat sebelum mengambil tindakan apa pun.

Dalam database saya perhatikan bahwa tabel "wp_woocommerce_sessions"Itu besar. Itu lebih dari 6 GB. Volume yang sangat besar untuk tabel dalam database yang biasanya tidak melebihi 100 MB secara total.

Apa itu wp_woocommerce_sessions?

Seperti yang bisa kita tebak dari namanya, meja"wp_woocommerce_sessions”Berisi sesi PHP (Sesi PHP).
Sesi ini adalah tindakan pengguna situs (atau robot web) dan sebagian besar waktu mereka mencapai database melalui cookie. Di dalam wp_woocommerce_sessions tersimpan data tentang produk yang dimasukkan pengguna ke dalam shopping cart, kupon, ongkos kirim, data pelanggan dan masih banyak informasi lainnya yang berkaitan dengan proses pemesanan produk.

Sesi ini dibuat apakah pengguna terdaftar di situs atau tidak dan biasanya akan kedaluwarsa dan dihapus secara otomatis setelah beberapa saat.

Sayangnya, sesi ini tidak selalu dihapus dan dalam beberapa kasus mereka tetap disimpan secara permanen di wp_woocommerce_sessions, yang membuat tabel ini cukup besar.

Bagaimana cara menghapus tabel? wp_woocommerce_sessions dari SQL?

1. pergi ke Menu Utama →  WooCommerce →  Status →  alat (tab).

2. Gulir ke bawah ke opsi "Hapus sesi pelanggan“. Cermat! Menghapus sesi pelanggan berarti menghapus semua produk yang mereka masukkan ke keranjang belanja. Jika saat menghapus sesi ini ada pelanggan yang memiliki produk di keranjang, mereka akan menghilang dan kemungkinan pesanan online tidak akan selesai.

3. Klik "Hapus" dan konfirmasikan operasinya.

Pada titik ini tabel "wp_woocommerce_sessions" kosong, jadi semua sesi belanja pelanggan telah dihapus.

Masalahnya jauh dari terpecahkan. Tabel SQL wp_woocommerce_sessions akan mengumpulkan data di dalamnya lagi dan secara default akan mendapatkan proporsi lagi, yang tidak diinginkan.

Bagaimana kami menghentikan sesi pelanggan agar tidak disimpan secara permanen di WooCommerce - wp_woocommerce_sessions?

Kami menunjukkan di atas bagaimana tabel "wp_woocommerce_sessions" dapat dikosongkan dari database, tetapi masalahnya akan muncul lagi setelah beberapa hari di mana sesi pelanggan akan berkumpul lagi.

Sebelum WooCommerce 2.5, sesi pelanggan ditangkap melalui cookie, yang kemudian disimpan di tabel WordPress. "wp_options".
Untuk toko yang lebih besar, metode ini sering menyebabkan bencana. "Wp_options" menjadi tabel penting WordPress, digunakan oleh opsi dan pengaturan umum. Mengidentifikasi dan secara manual menghapus sesi klien yang disimpan di wp_options itu bukan pekerjaan yang mudah.
Performa WooCommerce bukanlah yang terbaik, dan skalabilitas dari waktu ke waktu adalah hal yang sensitif.

Dengan peluncuran WooCommerce 2.5 pada tahun 2015, pengembang WooCommerce telah memperkenalkan sistem penanganan dan penyimpanan sesi WooCommerce baru, berdasarkan: Manajer Sesi WP. Sistem ini menyebabkan munculnya wp_woocommerce_sessions. Tabel khusus untuk sesi klien, yang dalam database tidak berinteraksi dengan tabel lain. Dalam kasus kesalahan besar, kerugian harus minimal.

Dari apa yang saya perhatikan, toko online yang diluncurkan sebelum WooCommerce 2.5 dan yang telah menerima pembaruan konstan dari waktu ke waktu, memiliki beberapa masalah dengan penghapusan otomatis sesi klien. Kemungkinan besar itu adalah bug yang muncul di versi terbaru WooCommerce 2.5 atau plugin WordPress / WooCommerce yang tidak mengikuti pembaruan.

Dalam kasus saya itu adalah konflik dengan fungsi yang ditambahkan ke file functions.php dari tema, dan yang mencegah penghapusan otomatis setelah waktu sesi kedaluwarsa dari woocommerce_sessions.
Jika Anda menghadapi masalah seperti itu, Anda harus hati-hati menyelidiki semua kemungkinan penyebabnya. Kesalahan SQL, izin SQL, Cron Job, konflik dengan plugin lain dan yang terakhir tetapi tidak kalah pentingnya, periksa perubahan yang Anda buat dalam kode dari waktu ke waktu.

Kami melihat bahwa WooCommerce hanya menawarkan $29 plugin yang mampu mengelola sesi pelanggan. “Hapus Keranjang dan Sesi untuk WooCommerce“. Tentu saja, selain penghapusan sesi yang dijadwalkan, modul ini memiliki beberapa alat yang dapat membantu Anda.

Opsi yang lebih sederhana penghapusan terjadwal dari “woocommerce_sessions”Pada interval satu hari, tersedia dengan kode berikut di 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();
}

Tinggalkan komentar jika Anda membutuhkan bantuan atau memiliki solusi lain.

Bergairah tentang teknologi, saya suka menguji dan menulis tutorial tentang sistem operasi macOS, Linux, Windows, tentang konfigurasi server web WordPress, WooCommerce, dan LEMP (Linux, NGINX, MySQL, dan PHP). saya menulis di StealthSettings.com sejak 2006, dan beberapa tahun kemudian saya mulai menulis di iHowTo.Tips tutorial dan berita tentang perangkat di ekosistem Apple: iPhone, iPad, Apple Tonton, HomePod, iMac, MacBook, AirPods, dan aksesori.

Tinggalkan Komentar