wp_woocommerce_sessions كبيرة جدًا في قاعدة البيانات [How-To Fix]

كما قلت في مقالات أخرى ، تعد WooCommerce وحدة قوية ومرنة بشكل متزايد وقادرة على التحول WordPress في متجر مثالي على الإنترنت لبدء الأعمال التجارية.

بالنسبة لمتجر متواضع على الإنترنت ، يمكن تشغيل WooCommerce على "استضافة مشتركة" ، ويمكنه بسهولة دعم 5.000 منتج / 100 طلب في اليوم ، إذا كان السمة المستخدمة لا تستهلك الكثير من الموارد ولا تسيء استخدام الوحدات النمطية الأخرى (المكونات الإضافية).

تحسين كود المصدر مظاهر الفسفور الابيض والوحدات النمطية (ملحقات WP) و تحسين قاعدة البيانات هناك أيضًا جانبان يجب أن نكون حذرين للغاية بشأنهما.

لقد لاحظت في اليوم الآخر أن متجرًا متواضعًا على الإنترنت بدأ لاستهلاك الكثير من موارد ذاكرة الوصول العشوائي و CPU على خادم مخصص كريم - سخي. أدى هذا الاستهلاك المرتفع للموارد إلى زيادة "الحمل" على الخادم ووقت تحميل طويل لصفحات المتجر على الإنترنت.

عندما نلاحظ حملاً مرتفعًا بشكل غير مبرر على خادم الويب ، فمن الجيد التحقيق بعناية في الأسباب قبل اتخاذ أي إجراء.

لاحظت في قاعدة البيانات أن الجدول "wp_woocommerce_sessions"انه ضخم. كان لديها أكثر من 6 غيغابايت. حجم ضخم لجدول في قاعدة بيانات لا يتجاوز إجمالي حجمه 100 ميغابايت

ما هو wp_woocommerce_sessions؟

كما يمكننا أن نخمن من اسمه ، الجدول "wp_woocommerce_sessions"يحتوي على جلسات PHP (جلسات PHP).
هذه الجلسات هي إجراءات لمستخدمي الموقع (أو روبوتات الويب) وفي معظم الأوقات يصلون إلى قاعدة البيانات من خلال ملفات تعريف الارتباط. في wp_woocommerce_sessions يتم تخزين البيانات حول المنتجات التي وضعها المستخدمون في عربة التسوق ، والقسائم ، ورسوم الشحن ، وبيانات العملاء والعديد من المعلومات الأخرى المتعلقة بعملية طلب المنتج.

يتم إنشاء هذه الجلسات سواء كان المستخدم مسجلاً على الموقع أم لا ، وعادةً يجب أن تنتهي صلاحيتها وحذفها تلقائيًا بعد فترة.

لسوء الحظ ، لا يتم حذف هذه الجلسات دائمًا وفي بعض الحالات تظل مخزنة بشكل دائم في wp_woocommerce_sessions ، مما يجعل هذا الجدول كبيرًا جدًا.

كيفية حذف الجدول wp_woocommerce_sessions من SQL؟

1. الذهاب إلى حساب →  كتب مريم الدخيل لاكاديمية الثراء  →  الحالة →  الأدوات  (التبويب).

2. قم بالتمرير لأسفل إلى الخيار "جلسات واضحة للعملاء". حذر! يعني حذف جلسات العملاء حذف جميع المنتجات التي يضعونها في عربة التسوق. إذا كان هناك عملاء لديهم منتجات في سلة التسوق أثناء حذف هذه الجلسات ، فسيختفون ولن يكتمل الطلب المحتمل عبر الإنترنت.

3. انقر فوق "مسح" وقم بتأكيد العملية.

في هذه المرحلة ، يكون جدول "wp_woocommerce_sessions" فارغًا ، لذلك تم حذف جميع جلسات تسوق العملاء.

المشكلة بعيدة عن الحل. سيقوم جدول wp_woocommerce_sessions SQL بجمع البيانات فيه مرة أخرى وبشكل افتراضي سوف يكتسب النسب مرة أخرى ، وهو أمر غير مرغوب فيه.

كيف يمكننا إيقاف تخزين جلسات العملاء بشكل دائم في 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 من الموضوع ، والتي يمنع الحذف التلقائي بعد وقت انتهاء صلاحية الجلسات من woocommerce_sessions.
إذا واجهت مثل هذه المشكلة ، يجب عليك التحقيق بعناية في جميع الأسباب المحتملة. يتعارض خطأ SQL وأذونات SQL و Cron Job مع المكونات الإضافية الأخرى وأخيراً وليس آخراً تحقق من التغييرات التي أجريتها في التعليمات البرمجية بمرور الوقت.

لقد رأينا أن 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();
}

اترك تعليقًا إذا كنت بحاجة إلى مساعدة أو لديك حل آخر.

تم إجراء آخر تعديل على هذا المنشور في 13 يونيو 2021 21:59

Stealth: شغوفًا بالتكنولوجيا ، أحب اختبار وكتابة برامج تعليمية حول أنظمة التشغيل macOS, Linux, Windows، حول WordPressو WooCommerce وتكوين خوادم الويب LEMP (Linuxو NGINX و MySQL و PHP). أكتب على StealthSettings.com منذ عام 2006 ، وبعد بضع سنوات بدأت الكتابة على iHowTo. نصائح تعليمية وأخبار حول الأجهزة في النظام البيئي Apple: iPhone, iPad, Apple مشاهدة ، HomePod ، iMac, MacBook، AirPods وملحقاتها.

عرض التعليقات (1)

  • ليس لدي طريقة لحذف البيانات التي تزن 500 ميجابايت ولدي حد 1000 ميجابايت في الدقيقة لحذف كل شيء يتم ملؤه بالكامل مرة أخرى .... أي حل؟