ใหญ่เกินไป wp_woocommerce_sessions ในฐานข้อมูล [วิธีแก้ไข]

ดังที่ฉันได้กล่าวไว้ในบทความอื่น ๆ WooCommerce เป็นโมดูลที่แข็งแกร่งและยืดหยุ่นมากขึ้น สามารถแปลงร่างได้ WordPress ใน ร้านค้าออนไลน์ในอุดมคติสำหรับธุรกิจสตาร์ทอัพ.

สำหรับร้านค้าออนไลน์ขนาด modeวาง, WooCommerce นอกจากนี้ยังสามารถทำงานบน "โฮสติ้งที่ใช้ร่วมกัน" ซึ่งสามารถรองรับผลิตภัณฑ์ 5.000 รายการ / 100 คำสั่งซื้อต่อวันได้อย่างง่ายดาย หากธีมที่ใช้ไม่ใช้ทรัพยากรจำนวนมาก และคุณไม่ได้ใช้โมดูล (ปลั๊กอิน) ในทางที่ผิด

การเพิ่มประสิทธิภาพซอร์สโค้ด ธีม WP โมดูล (ปลั๊กอิน WP) และ การเพิ่มประสิทธิภาพฐานข้อมูล นอกจากนี้ยังมีสองด้านที่เราต้องระวังให้มาก

ฉันสังเกตเห็นวันอื่น ๆ ที่ร้านค้าออนไลน์ขนาด modeมันเริ่มต้น เพื่อใช้ทรัพยากร RAM จำนวนมากและ CPU บนเซิร์ฟเวอร์เฉพาะ ใจกว้าง การใช้ทรัพยากรที่สูงนี้นำไปสู่ ​​"การโหลด" ที่เพิ่มขึ้นบนเซิร์ฟเวอร์และเวลาในการโหลดหน้าร้านค้าออนไลน์ที่ยาวนาน

เมื่อเราสังเกตเห็นว่ามีการใช้งานเว็บเซิร์ฟเวอร์สูงอย่างไม่สมเหตุสมผล การตรวจสอบสาเหตุอย่างรอบคอบก่อนที่จะดำเนินการใดๆ ถือเป็นการดี

ในฐานข้อมูลฉันสังเกตว่าตาราง "wp_woocommerce_sessions"มันใหญ่. มีมากกว่า 6 GB ปริมาณมากสำหรับตารางในฐานข้อมูลที่ปกติแล้วไม่เกิน 100 MB

wp_ คืออะไรwoocommerce_เซสชัน ?

อย่างที่เราเดาได้จากชื่อของเขา ตาราง "wp_woocommerce_sessions”ประกอบด้วยเซสชัน PHP (PHP เซสชัน).
เซสชันเหล่านี้เป็นการกระทำของผู้ใช้เว็บไซต์ (หรือเว็บโรบ็อต) และส่วนใหญ่เข้าถึงฐานข้อมูลผ่านคุกกี้ ใน wp_woocommerce_sessions คือข้อมูลที่จัดเก็บเกี่ยวกับสินค้าที่ผู้ใช้วางในตะกร้าสินค้า คูปอง ค่าจัดส่ง ข้อมูลลูกค้า และข้อมูลอื่นๆ อีกมากมายที่เกี่ยวข้องกับกระบวนการสั่งซื้อผลิตภัณฑ์

เซสชั่นเหล่านี้ถูกสร้างขึ้นไม่ว่าผู้ใช้จะลงทะเบียนบนเว็บไซต์หรือไม่ก็ตาม และโดยปกติแล้วจะหมดอายุและลบโดยอัตโนมัติหลังจากนั้นครู่หนึ่ง

ขออภัย เซสชันเหล่านี้ไม่ได้ถูกลบเสมอไป และในบางกรณี เซสชันเหล่านี้จะยังคงถูกจัดเก็บไว้ใน wp_ อย่างถาวรwoocommerce_sessions ซึ่งทำให้ตารางนี้เข้าถึงปริมาณมากพอสมควร

วิธีการลบตาราง wp_woocommerce_sessions จาก SQL?

1 ไปที่ Dashboard →  WooCommerce →  Status →  เครื่องมือ (แท็บ).

2. เลื่อนลงไปที่ตัวเลือก "เคลียร์เซสชั่นลูกค้า“. ระวัง! การลบเซสชันลูกค้าหมายถึงการลบผลิตภัณฑ์ทั้งหมดที่พวกเขาใส่ในตะกร้าสินค้า หากขณะลบเซสชันเหล่านี้ มีลูกค้าที่มีสินค้าอยู่ในตะกร้าสินค้า พวกเขาจะหายไปและคำสั่งซื้อออนไลน์ที่เป็นไปได้จะไม่เสร็จสมบูรณ์

3. คลิก "ล้าง" และยืนยันการดำเนินการ

ในขณะนี้ ตาราง "wp_woocommerce_sessions" ว่างเปล่า ดังนั้นเซสชันการซื้อของลูกค้าทั้งหมดจึงถูกลบ

ปัญหาอยู่ไกลจากการแก้ไข ตาราง SQL wp_woocommerce_sessions จะรวบรวมข้อมูลในนั้นอีกครั้งและโดยค่าเริ่มต้นจะได้รับสัดส่วนอีกครั้งซึ่งไม่เป็นที่ต้องการ

เราจะหยุดเซสชันไคลเอ็นต์ไม่ให้ถูกจัดเก็บอย่างถาวรได้อย่างไร WooCommerce - wp_woocommerce_sessions?

ฉันได้แสดงให้เห็นว่าตาราง "wp_woocommerce_sessions" จากฐานข้อมูล แต่ปัญหาจะปรากฏขึ้นอีกครั้งหลังจากผ่านไปสองสามวันเมื่อเซสชันไคลเอนต์จะรวบรวมอีกครั้ง

ก่อนที่ WooCommerce 2.5 เซสชันไคลเอนต์ถูกจับผ่านคุกกี้ เพื่อบันทึกไว้ในตารางในภายหลัง WordPress "wp_options"
สำหรับร้านค้าขนาดใหญ่ วิธีนี้มักทำให้เกิดภัยพิบัติ “Wp_options”เป็นตารางสำคัญของ WordPressใช้โดยตัวเลือกและการตั้งค่าทั่วไป การระบุและการลบเซสชันไคลเอ็นต์ที่จัดเก็บไว้ใน .ด้วยตนเอง wp_options มันไม่ใช่งานง่าย
การปฏิบัติ WooCommerce พวกเขาไม่ได้ดีที่สุดและความสามารถในการขยายเมื่อเวลาผ่านไปเป็นจุดที่ละเอียดอ่อน

ด้วยการเปิดตัว WooCommerce 2.5 ในปี 2015 ผู้พัฒนา WooCommerce แนะนำระบบจัดการและจัดเก็บเซสชั่นใหม่ WooCommerceอยู่บนพื้นฐานของ ผู้จัดการเซสชัน WP. ระบบนี้นำไปสู่การเกิดขึ้น wp_woocommerce_sessions. ตารางเฉพาะสำหรับเซสชันไคลเอ็นต์ ซึ่งในฐานข้อมูลไม่โต้ตอบกับตารางอื่น ในกรณีที่เกิดข้อผิดพลาดครั้งใหญ่ การสูญเสียควรน้อยที่สุด

จากที่สังเกตร้านค้าออนไลน์เปิดตัวมาก่อน WooCommerce 2.5 ที่ได้รับการอัปเดตอย่างต่อเนื่องเมื่อเวลาผ่านไป มีปัญหาบางอย่างเกี่ยวกับการลบเซสชันไคลเอ็นต์โดยอัตโนมัติ เป็นไปได้มากว่าข้อผิดพลาดที่ปรากฏในเวอร์ชันที่ใหม่กว่าของ WooCommerce 2.5 หรือปลั๊กอิน WordPress / WooCommerce ซึ่งไม่ทันกับการปรับปรุง

ในกรณีของฉันมันเป็นข้อขัดแย้งกับฟังก์ชันที่เพิ่มเข้าไปในไฟล์ functions.php ของธีมและที่ ป้องกันการลบอัตโนมัติหลังจากช่วงเวลาหมดอายุจาก session woocommerce_sessions.
หากคุณกำลังประสบปัญหาดังกล่าว คุณต้องตรวจสอบสาเหตุที่เป็นไปได้ทั้งหมดอย่างรอบคอบ ข้อผิดพลาด SQL, การอนุญาต SQL, งาน Cron, ความขัดแย้งกับปลั๊กอินอื่น ๆ และสุดท้ายแต่ไม่ท้ายสุด ตรวจสอบการเปลี่ยนแปลงที่คุณได้ทำในโค้ดเมื่อเวลาผ่านไป

ผมเห็นว่า WooCommerce ข้อเสนอเพียง $29 ต่อปลั๊กอินที่สามารถจัดการเซสชันของลูกค้าได้ "ล้างรถเข็นและเซสชันสำหรับ WooCommerce“. แน่นอน นอกเหนือจากการลบเซสชันตามกำหนดเวลาแล้ว โมดูลยังมีเครื่องมือหลายอย่างที่สามารถช่วยคุณได้

ตัวเลือกที่ง่ายกว่า กำหนดการลบ “woocommerce_sessions”ในช่วงเวลาหนึ่งวันสามารถใช้ได้กับรหัสต่อไปนี้ใน 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();
}

แสดงความคิดเห็นหากคุณต้องการความช่วยเหลือหรือมีวิธีแก้ไขปัญหาอื่น

เป็นคนรักเทคโนโลยี ฉันเขียนบทความด้วยความสุขบน StealthSettings.com ตั้งแต่ปี 2006 ฉันมีประสบการณ์ที่หลากหลายในระบบปฏิบัติการ: macOS, Windows, และ Linux, รวมถึงภาษาโปรแกรมและแพลตฟอร์มบล็อก (WordPress) และสำหรับร้านค้าออนไลน์ (WooCommerce, Magento, PrestaShop)

วิธีการ » Tweaks & Hacks » ใหญ่เกินไป wp_woocommerce_sessions ในฐานข้อมูล [วิธีแก้ไข]

1 ความคิดเกี่ยวกับ “ใหญ่เกินไป wp_woocommerce_sessions ในฐานข้อมูล [วิธีแก้ปัญหา]"

  1. ฉันไม่มีทางลบข้อมูลที่มีน้ำหนัก 500mb และฉันมีขีด จำกัด 1000mb ต่อนาทีในการลบทุกอย่างถูกเติมเต็มอีกครั้ง ... วิธีแก้ปัญหาบางอย่าง?

    ตอบ
แสดงความคิดเห็น