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

WooCommerce ได้กลายเป็นโมดูลที่ใช้กันอย่างแพร่หลาย ร้านค้าออนไลน์. SEO, ผลิตภัณฑ์, การจัดการสินค้าคงคลัง, โค้ดที่สะอาดและใช้งานง่าย, อินเทอร์เฟซการดูแลระบบที่เรียบง่ายและปลั๊กอินนับพันที่พัฒนาขึ้นสำหรับ 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 →  Status →  การกระทำที่กำหนดเวลา.

วิธีทำความสะอาดรางน้ำ "ล้มเหลว","ยกเลิก"และ"สมบูรณ์"ใน 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 Shops ของคุณ และเขาทำทุกๆ 15 นาที รายการ SQL เหล่านี้หากไม่ได้รับการควบคุม คุณจะได้รับหลายแสนบรรทัด"wc_facebook_สร้างใหม่_ฟีด"ใน"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"

เป็นคนรักเทคโนโลยี ฉันเขียนบทความด้วยความสุขบน StealthSettings.com ตั้งแต่ปี 2006 ฉันมีประสบการณ์ที่หลากหลายในระบบปฏิบัติการ: macOS, Windows, และ Linux, รวมถึงภาษาโปรแกรมและแพลตฟอร์มบล็อก (WordPress) และสำหรับร้านค้าออนไลน์ (WooCommerce, Magento, PrestaShop)

วิธีการ » Curiosity » แก้ไขตาราง 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 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

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

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