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

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

كيفية تنظيف المزاريب "فشل"،"ألغيت"و"إكمال"في 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".

تم إجراء آخر تعديل على هذا المنشور في 20 مايو 2021 10:07

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

عرض التعليقات (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 host til at opgive hans ell fine opp-tid. نو الانتهازي jeg med den fine kode!
    علامة التبويب wpb_action_scheduler_purge غير متوفرة في هذه الصفحة. 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 سوبر غرامة المادة

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