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

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

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

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

لقد لاحظت في اليوم الآخر أن متجرًا صغيرًا عبر الإنترنت قد بدأ العمل تستهلك كميات هائلة من موارد ذاكرة الوصول العشوائي (RAM) ووحدة المعالجة المركزية (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_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();
}

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

شغوفة بالتكنولوجيا ، أكتب بسرور على موقع Stealthsetts.com بدءًا من عام 2006. لدي تجربة غنية في أنظمة التشغيل: MacOS و Windows و Linux ، ولكن أيضًا في لغات البرمجة ومنصات التدوين (WordPress) والمتاجر عبر الإنترنت (WooCommerce ، Magento ، Presashop).

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

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

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

    رد
اترك تعليقًا