แก้ไขตาราง SQL ขนาดใหญ่: wp_actionscheduler_actions & wp_actionscheduler_logs [เคล็ดลับ WooCommerce]

WooCommerce ได้กลายเป็นโมดูลที่ใช้กันอย่างแพร่หลาย ร้านค้าออนไลน์. SEO, ผลิตภัณฑ์, การจัดการสินค้าคงคลัง, รหัสที่สะอาดและใช้งานง่าย, อินเทอร์เฟซ adminคำแนะนำง่ายๆ และปลั๊กอินนับพันที่พัฒนาขึ้นสำหรับ Woo เป็นเพียงเหตุผลบางส่วนที่คุณควรลองใช้เมื่อคุณคิดที่จะพัฒนาร้านค้าออนไลน์

เช่นเดียวกับ CMS ใดๆ Woo ก็ไม่มีข้อยกเว้นสำหรับสิ่งแปลกประหลาดที่อาจเกิดขึ้นในสถานการณ์การใช้งานหรือการโต้ตอบต่างๆ กับปลั๊กอินอื่นๆ WordPress.
บนเซิร์ฟเวอร์ทรัพยากร ฮาร์ดแวร์ ค่อนข้างใจกว้างฉันสังเกตเห็นว่า บริการฐานข้อมูล (mysqld) เริ่มต้องการ RAM เกือบ 80-90% ปัญหาค่อนข้างร้ายแรงเพราะฉันไม่เข้าใจว่าข้อผิดพลาด 110 มาจากไหนเป็นระยะ (110: หมดเวลาการเชื่อมต่อ).
จากการตรวจสอบกระบวนการ SQL อย่างใกล้ชิดฉันพบว่าฐานข้อมูลมีสองตารางที่มีปริมาณค่อนข้างมาก: wp_actionscheduler_actions si wp_actionscheduler_logs.

ปกติ การดำเนินการตามกำหนดเวลา ของ ตัวกำหนดตารางเวลาการดำเนินการของ WooCommerce ควรลบโดยอัตโนมัติหลังจากดำเนินการแล้ว สิ่งนี้ไม่ได้เกิดขึ้นเสมอไปและติดอยู่ใน wp_actionsscheduler_actions พร้อมกับสถานะ: ล้มเหลว, ยกเลิก, คาราคาซัง หรือ สมบูรณ์.

ในภาพด้านบนตาราง "wp_actionscheduler"พวกเขามีเพียง เพียง 15 ลบ. ฉันขอโทษฉันไม่ได้รับแรงบันดาลใจให้จับภาพหน้าจอเมื่อพวกเขามี 1.2 GB. ถึงกระนั้น 15 MB ก็เพียงพอสำหรับตารางที่มีการดำเนินการตามโปรแกรมของ 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 ด้วยสาเหตุหลายประการ ดังนั้นจึงไม่สามารถลบรายการที่มีสถานะ "ซอมบี้" ได้อีกต่อไป
เป็นสิ่งสำคัญมากที่จะต้องรู้ว่าหากคุณมีร้านค้าออนไลน์บน WooCommerce และมีการเชื่อมต่อกับ Facebook Shops ผ่านปลั๊กอิน "Facebook สำหรับ WooCommerce"มันจะซิงค์ผลิตภัณฑ์ WooCommerce กับบัญชีร้านค้า Facebook ของคุณโดยอัตโนมัติ และเขาทำในเวลาประมาณ 15 นาที หากรายการ SQL เหล่านี้ไม่ได้รับการควบคุมคุณจะได้รับหลายแสนบรรทัด "wc_facebook_regenerate_feed"ใน"wp_actionscheduler_actions"

ช่วงเวลานี้ใช้ได้สำหรับร้านค้าที่มีคำสั่งซื้อจำนวนมากและต้องมีการอัปเดตสต็อกสินค้าของ Facebook Shops อยู่ตลอดเวลา หากคุณยังคิดว่าการซิงค์เหล่านี้ระหว่าง Facebook และร้านค้าของคุณสามารถทำได้ทุกๆ 24 ชั่วโมงบรรทัดโค้ดด้านล่างนี้สามารถช่วยได้

เปิดไฟล์ functions.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]

หลงใหลในเทคโนโลยี ฉันชอบทดสอบและเขียนบทช่วยสอนเกี่ยวกับระบบปฏิบัติการ macOS, Linux, Windows, เกี่ยวกับ WordPress, WooCommerce และกำหนดค่าเว็บเซิร์ฟเวอร์ LEMP (Linux, NGINX, MySQL และ PHP) ฉันเขียนบน StealthSettings.com ตั้งแต่ปี 2006 และไม่กี่ปีต่อมา ฉันเริ่มเขียนบทแนะนำและข่าวสารเกี่ยวกับอุปกรณ์ในระบบนิเวศ iHowTo.Tips Apple: iPhone, iPad, Apple ดู, โฮมพอด, iMac, MacBook, AirPods และอุปกรณ์เสริม

1 คิดเกี่ยวกับ “แก้ไขตาราง SQL ขนาดใหญ่: wp_actionscheduler_actions & wp_actionscheduler_logs [เคล็ดลับ WooCommerce]”

  1. @Stealth
    ตากสำหรับhjælpen. ร้าน Du redder min dag og Jeg opdagede først dette efter et nedbrud af min เว็บช็อป จัดการปลั๊กอินและเริ่มต้นที่การถ่ายโอนข้อมูลเอาต์พุต ฉันอยู่ในตารางและเดต fylder... กำลังค้นหา 9.2GB ตาราง fik นาทีโฮสต์จนถึงที่ opgive hans ผู้ขายที่ดี opp-tid นูทริมเมอร์ jeg med den fine kode!
    Lige et spørgsmål på falde rebet denne table “wpb_action_scheduler_purge” default ฉัน db'en eller skal jeg evt. เปลี่ยนชื่อ den til noget i min (default hedder ขั้นต่ำ db ikke 'wp_') หรือไม่ก็ en funktion?
    ตากสำหรับhjælpen og den super fine artikel

    ฮิลเซน
    เน็ตซี่

    ตอบ

แสดงความคิดเห็น