إصلاح جداول SQL الضخمة: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce نصائح]

WooCommerce لقد أصبحت وحدة نمطية مستخدمة على نطاق واسع المحلات التجارية على الإنترنت. تحسين محركات البحث، وإدارة المنتجات والمخزون ، والتعليمات البرمجية النظيفة والبديهية ، وواجهة الإدارة البسيطة والآلاف من المكونات الإضافية التي تم تطويرها لـ Woo ، ليست سوى بعض الأسباب التي تجعلها تستحق فرصة عندما تفكر في تطوير متجر عبر الإنترنت.

مثل أي CMS ، Woo ليس استثناءً من الشذوذ الذي يمكن أن يحدث في سيناريوهات الاستخدام أو التفاعل المختلفة مع المكونات الإضافية الأخرى. WordPress.
على خادم الموارد خردوات كريم جدا ، لقد لاحظت ذلك خدمة قاعدة البيانات (mysqld) يتطلب ما يقرب من 80-90٪ من ذاكرة الوصول العشوائي. مشكلة خطيرة جدًا ، لأنني لم أفهم من أين يأتي الخطأ 110 بشكل دوري (110: انقضت مهلة الاتصال).
عند الفحص الدقيق لعمليات SQL ، وجدت أن قاعدة البيانات تحتوي على جدولين بكميات كبيرة جدًا: wp_actionscheduler_actions si wp_actionscheduler_logs.

عادة الإجراءات المجدولة من WooCommerce جدولة العمل يجب حذفها تلقائيًا بعد تنفيذها. هذا لا يحدث دائمًا ، ويعلقون في wp_actionsscheduler_actions بالحالة: فشل, ألغيت, ريثما أو إكمال.

في الصورة أعلاه ، الجداول "wp_actionsscheduler"لديهم فقط ما يزيد قليلا عن 15 ميغا بايت. أنا آسف لأنني لم أكن مصدر إلهام لأخذ لقطة شاشة عندما كان لديهم 1.2 جيجا بايت. ومع ذلك ، فإن 15 ميغا بايت كبيرة جدًا بالنسبة للجدول الذي يحتوي على الإجراءات المبرمجة لـ WooCommerce.
هذه الجداول "المنتفخة" نتيجة لذلك لا يقوم WP-Cron بحذف الإدخالات من لديه مكانة "فشل"،"ألغيت"و"إكمال". عادة يجب حذف هذه الإدخالات تلقائيًا من قاعدة البيانات.
يمكن رؤية الإجراءات المجدولة وحالتها بسهولة شديدة وفي WooCommerce →  الحالة →  الإجراءات المجدولة.

كيفية تنظيف المزاريب "فشل"،"ألغيت"و"إكمال"في wp_actionscheduler_actions si wp_actionscheduler_logs

نصل إلى قاعدة البيانات من خلال phpMyAdmin ، ثم في SQL ننفذ أسطر الأوامر بدورها:

DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed'

بمجرد تنظيف هذا الجدول ، لا يعني ذلك أن المشكلة قد تم حلها. كما قلت أعلاه ، فإن السبب الرئيسي هو تعطيل خدمة WP-Cron لأسباب مختلفة. وبالتالي لا يمكن حذف الإدخالات ذات الحالة "zombie".
من المهم جدًا معرفة أنه إذا كان لديك متجر على الإنترنت WooCommerce، وهو متصل بمتاجر Facebook من خلال البرنامج المساعد "فيسبوك WooCommerce"، يقوم تلقائيًا بمزامنة المنتجات من WooCommerce بحسابك على Facebook Shops. وهو يفعل ذلك كل 15 دقيقة. إذا لم يتم التحكم في إدخالات SQL هذه ، فيمكنك الحصول على مئات الآلاف من السطور "wc_facebook_regenerate_feed"في"wp_actionscheduler_actions".

هذا الفاصل الزمني مناسب للمتاجر التي لديها عدد كبير من الطلبات ويحتاج مخزون منتجات Facebook Shops إلى التحديث باستمرار. إذا كنت لا تزال تعتقد أن هذه المزامنة بين Facebook ومتجرك يمكن إجراؤها مرة واحدة كل 24 ساعة ، فيمكن أن يساعدك سطر الكود أدناه.

افتح ملف function.php للموضوع WordPress / WooCommerce الذي يعمل به متجرك وأضف:

add_filter( 'wc_facebook_feed_generation_interval', function(){ return HOUR_IN_SECONDS * 24; } );

بعد ذلك يمكننا تحديد فترة أسبوع للتنظيف التلقائي:

add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge' );
function wpb_action_scheduler_purge() {
 return WEEK_IN_SECONDS;
}

بمجرد حفظ هذه التغييرات لن تواجهك أية مشاكل مع الجداول العملاقة لـ "wp_actionscheduler_actions".

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

كيف » فضول » إصلاح جداول SQL الضخمة: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce نصائح]

1 فكرت في "إصلاح جداول SQL الضخمة: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce نصائح]"

  1. @Stealth
    تاك ل hjælpen. Du redder min dag og shop. تم تشغيله لأول مرة من متجر الويب. Mange plugins er begyndt at dumpe deres output i den tabel og det fylder… wooping 9.2GB tabel fik min مضيف حتى في opgive hans ellers fine opp-tid. نو الانتهازي jeg med den fine kode!
    Lige et spørgsmål på falde rebet denne tabel "wpb_action_scheduler_purge" er det en default أنا db'en eller skal jeg evt. إعادة تسمية den til noget i min (default hedder min db ikke 'wp_') eller er det måske en funktion؟
    تاك ل hjælpen og den سوبر غرامة المادة

    هيلسن
    شبكة الاتصال

    رد
اترك تعليق