إصلاح جداول 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 Action Scheduler يجب حذفها تلقائيًا بعد تنفيذها. هذا لا يحدث دائمًا ، ويعلقون في 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 ساعة ، فيمكن أن يساعدك سطر الكود أدناه.

افتح ملف الوظائف / 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".

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

عن المؤلف

تسلل

شغوف بكل شيء عن الأدوات الذكية وتكنولوجيا المعلومات ، أكتب بسرور على التخفيsettings.com منذ عام 2006 وأود أن أكتشف معكم أشياء جديدة حول أجهزة الكمبيوتر وأنظمة التشغيل macنظام التشغيل ، لينوكس ، Windowsو iOS و Android.

اترك تعليق