جلسات wp_woocommerce_sessions كبيرة جدًا في قاعدة البيانات [كيفية الإصلاح]

كما قلت في مقالات أخرى ، 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. الذهاب إلى لوحة المعلومات →  WooCommerce →  الحالة →  الأدوات  (التبويب).

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 من الموضوع ، والتي يمنع الحذف التلقائي بعد وقت انتهاء صلاحية الجلسات من 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();
}

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

شغوفة بالتكنولوجيا ، أكتب بسرور StealthSettings.com منذ عام 2006. لدي خبرة واسعة في أنظمة التشغيل: macOS, Windows سي Linuxبل أيضًا في لغات البرمجة ومنصات التدوين (WordPress) وللمتاجر عبر الإنترنت (WooCommerce، ماجنتو، بريستاشوب).

كيف » القرص & المأجورون » جلسات wp_woocommerce_sessions كبيرة جدًا في قاعدة البيانات [كيفية الإصلاح]

فكرة واحدة عن "جلسات wp_woocommerce_sessions الكبيرة جدًا في قاعدة البيانات [كيفية الإصلاح]"

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

    رد
اترك تعليق