बहुत बड़ा wp_woocommerce_डेटाबेस में सत्र [कैसे ठीक करें]

जैसा कि मैंने अन्य लेखों में कहा, WooCommerce यह एक तेजी से मजबूत और लचीला मॉड्यूल है, जो परिवर्तन करने में सक्षम है WordPress एक में एक स्टार्ट-अप व्यवसाय के लिए आदर्श ऑनलाइन स्टोर.

आकार के एक ऑनलाइन स्टोर के लिए modeकाएं, WooCommerce इसे "साझा होस्टिंग" पर भी चलाया जा सकता है, जो प्रति दिन 5.000 उत्पादों / 100 ऑर्डरों का आसानी से समर्थन करने में सक्षम है, यदि उपयोग की गई थीम कई संसाधनों का उपभोग नहीं करती है और आप अन्य मॉड्यूल (प्लगइन्स) का दुरुपयोग नहीं करते हैं।

स्रोत कोड अनुकूलन (WP थीम्स), मॉड्यूल (WP प्लगइन्स) और . से डेटाबेस अनुकूलन ऐसे दो पहलू भी हैं जिनके बारे में हमें बहुत सावधान रहने की आवश्यकता है।

मैंने दूसरे दिन देखा कि आकार का एक ऑनलाइन स्टोर modeयह शुरू होता है बहुत अधिक RAM संसाधनों का उपभोग करने के लिए और CPU एक समर्पित सर्वर पर उदार। संसाधनों की इस उच्च खपत के कारण सर्वर पर "लोड" बढ़ गया और ऑनलाइन स्टोर पेजों का लोडिंग समय लंबा हो गया।

जब हम वेब सर्वर पर अनुचित रूप से उच्च भार देखते हैं, तो कोई भी कार्रवाई करने से पहले कारणों की सावधानीपूर्वक जांच करना अच्छा होता है।

डेटाबेस में मैंने देखा कि तालिका "wp_woocommerce_sessions"यह बहुत बड़ा है। इसमें 6 जीबी से अधिक था। एक डेटाबेस में एक तालिका के लिए एक बड़ी मात्रा जो सामान्य रूप से कुल 100 एमबी से अधिक नहीं होती है।

wp_ क्या हैwoocommerce_सत्र ?

जैसा कि हम उनके नाम से अनुमान लगा सकते हैं, तालिका "wp_woocommerce_sessions"PHP सत्र शामिल हैं (पीएचपी सत्र).
ये सत्र साइट उपयोगकर्ताओं (या वेब रोबोट) की गतिविधियां हैं और अधिकांश समय वे कुकीज़ के माध्यम से डेटाबेस में समाप्त हो जाते हैं। wp_ मेंwoocommerce_सत्रों में उपयोगकर्ताओं द्वारा शॉपिंग कार्ट में रखे गए उत्पादों, कूपन, शिपिंग शुल्क, ग्राहक डेटा और उत्पाद ऑर्डरिंग प्रक्रिया से संबंधित कई अन्य जानकारी के बारे में डेटा संग्रहीत किया जाता है।

ये सत्र बनाए जाते हैं चाहे उपयोगकर्ता साइट पर पंजीकृत हो या नहीं और सामान्य रूप से स्वचालित रूप से समाप्त हो जाना चाहिए और थोड़ी देर बाद हटा देना चाहिए।

दुर्भाग्य से, ऐसा हमेशा नहीं होता है कि ये सत्र हटा दिए जाते हैं और, कुछ मामलों में, वे स्थायी रूप से wp_ में संग्रहीत रहते हैंwoocommerce_सत्र, जो इस तालिका को काफी बड़ी मात्रा तक पहुंचाता है।

टेबल को कैसे डिलीट करें wp_woocommerce_sessions एसक्यूएल से?

1. करने के लिए जाओ डैशबोर्ड  →  WooCommerce →  स्थिति →  टूल्स (टैब)।

2. विकल्प पर स्क्रॉल करें "ग्राहक सत्र साफ़ करें". सावधान! ग्राहक सत्रों को हटाने का अर्थ है शॉपिंग कार्ट में रखे गए सभी उत्पादों को हटाना। यदि इन सत्रों को हटाते समय ऐसे ग्राहक हैं जिनके पास कार्ट में उत्पाद हैं, तो वे गायब हो जाएंगे और संभावित ऑनलाइन ऑर्डर पूरा नहीं होगा।

3. "क्लियर" पर क्लिक करें और ऑपरेशन की पुष्टि करें।

इस समय तालिका "wp_woocommerce_सत्र" खाली है, इसलिए सभी ग्राहक खरीदारी सत्र हटा दिए गए हैं।

समस्या हल होने से कोसों दूर है. SQL तालिका wp_woocommerce_sessions इसमें फिर से डेटा एकत्र करेगा और डिफ़ॉल्ट रूप से इसे फिर से अनुपात मिलेगा, जो वांछनीय नहीं है।

हम क्लाइंट सत्रों को स्थायी रूप से संग्रहीत होने से कैसे रोकें? WooCommerce - wp_woocommerce_sessions?

मैंने ऊपर दिखाया है कि कैसे तालिका "wp_woocommerce_sessions" डेटाबेस से, लेकिन समस्या कुछ दिनों के बाद फिर से दिखाई देगी जब क्लाइंट सत्र फिर से एकत्रित होंगे।

से पहले WooCommerce 2.5, क्लाइंट सत्र कुकीज़ के माध्यम से कैप्चर किए गए, जिन्हें बाद में तालिका में सहेजा जाएगा WordPress "wp_options".
बड़ी दुकानों के लिए, इस पद्धति से अक्सर आपदाएँ आती हैं। "डब्ल्यूपी_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 विषय की, और जो से समाप्त होने वाले सत्रों के समय के बाद स्वत: विलोपन को रोकता है woocommerce_sessions.
यदि आप ऐसी समस्या का सामना कर रहे हैं तो आपको सभी संभावित कारणों की सावधानीपूर्वक जांच करने की आवश्यकता है। एसक्यूएल त्रुटि, एसक्यूएल अनुमतियां, क्रॉन जॉब, अन्य प्लगइन्स के साथ संघर्ष और अंतिम लेकिन कम से कम समय के साथ कोड में आपके द्वारा किए गए परिवर्तनों की जांच न करें।

मैंने देखा 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();
}

अगर आपको मदद चाहिए या कोई अन्य समाधान है तो एक टिप्पणी छोड़ दें।

प्रौद्योगिकी के प्रति जुनूनी होने के कारण मैं इस पर मजे से लिखता हूं StealthSettings2006 से .com। मुझे ऑपरेटिंग सिस्टम में व्यापक अनुभव है: macOS, Windows एसआई Linux, लेकिन प्रोग्रामिंग भाषाओं और ब्लॉगिंग प्लेटफ़ॉर्म में भी (WordPress) और ऑनलाइन स्टोर के लिए (WooCommerce, मैगेंटो, प्रेस्टाशॉप)।

कैसे करें » Tweaks और भाड़े » बहुत बड़ा wp_woocommerce_डेटाबेस में सत्र [कैसे ठीक करें]

1 विचार "बहुत बड़ा wp_woocommerce_डेटाबेस में सत्र [कैसे ठीक करें]"

  1. मेरे पास 500 एमबी वजन वाले डेटा को हटाने का कोई तरीका नहीं है और मेरे पास 1000 एमबी प्रति मिनट की सीमा है ताकि सब कुछ पूरी तरह से फिर से भर जाए ... कुछ समाधान?

    जवाब दें
एक टिप्पणी छोड़ दो