WooCommerce זה הפך למודול מאוד משומש על ידי יותר ויותר מגזין ברשתו SEO, ניהול מוצר ומלאי, קוד נקי ואינטואיטיבי, ממשק ניהול פשוט ואלפי התוספים שפותחו עבור Woo, הם רק חלק מהסיבות שבגללן מגיע לו הזדמנות כשחושבים על פיתוח חנות מקוונת.
כמו כל מערכת CMS, Woo אינה פטורה מהמוזרויות שעלולות להופיע בתרחישים שונים של שימוש או אינטראקציה עם תוספים אחרים של וורדפרס.
בשרת עם משאבים חוּמרָה די נדיב, שמתי לב לזה שירות מסד נתונים ((mysqld) מתחיל לבקש כמעט 80– 90% מזיכרון RAM. בעיה די רצינית, כי פשוט לא הבנתי מאיפה מגיעה השגיאה 110 מעת לעת (110: תם הזמן הקצוב לחיבור).
לאחר בדיקה מדוקדקת יותר של תהליכי SQL, גיליתי שלבסיס נתונים אחד יש שתי טבלאות עם נפחים ניכרים למדי: wp_actionscheduler_actions ו wp_actionscheduler_logsו
במצב רגיל פעולות מתוזמנות אֲבָל מתזמן פעולות WooCommerce יש למחוק אותם אוטומטית לאחר ביצועם. זה לא תמיד קורה, והם נשארים חסומים ב-wp_actionsscheduler_actions עם הסטטוס: נִכשָׁל- בּוּטלָה- תָלוּי וְעוֹמֵד אוֹ לְהַשְׁלִיםו
בתמונה למעלה, הטבלאות “wp_actionsscheduler” יש להם רק קצת יותר מ-15 מגה-בייט. אני מצטער שלא קיבלתי השראה לצלם צילום מסך כשהם עשו זאת1.2 ג'יגה-בייט. למרות זאת, 15 מגה-בייט זה די הרבה עבור טבלה שמכילה פעולות WooCommerce מתוזמנות.
הטבלאות האלה “מְנוּפָּח” זה נובע מכ WP-Cron אינו מוחק ערכים טיפול או סטטוס “נִכשָׁל“- “בּוּטלָה” ו “לְהַשְׁלִים“. בדרך כלל יש למחוק ערכים אלו באופן אוטומטי ממסד הנתונים.
ניתן לראות בקלות רבה את הפעולות המתוכנתות ואת הסטטוס שלהן WooCommerce →סטָטוּס →פעולות מתוזמנותו
איך מנקים את הניקוזים? “נִכשָׁל“- “בּוּטלָה” ו “לְהַשְׁלִים” מִןwp_actionscheduler_actions ו 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 מסיבות שונות. כך הערכים עם סטטוסים “מְטוּמטָם” לא ניתן עוד למחוק אותם.
חשוב מאוד לדעת שאם יש לכם חנות מקוונת ב-WoCommerce, והיא מחוברת ל-Facebook Shops דרך התוסף “פייסבוק עבור WooCommerce“, הוא מסנכרן אוטומטית את מוצרי WooCommerce עם חשבון ה-Facebook Shops שלך. והוא עושה את זה כל 15 דקות. אם ערכי SQL אלה אינם נשלטים, אתה יכול לקבל כמה מאות אלפי שורות “wc_facebook_regenerate_feed” ב “wp_actionscheduler_actions“ו
מרווח זה בסדר לחנויות שיש להן מספר רב של הזמנות ויש צורך שמלאי המוצרים בחנויות פייסבוק יתעדכן כל הזמן. אם אתה עדיין חושב שאפשר לעשות את הסינכרון הזה בין פייסבוק לחנות שלך אחת ל-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”ו



@הִתגַנְבוּת
תודה על העזרה. אתה מציל את היום שלי ועושה קניות. גיליתי את זה רק לאחר קריסה של חנות האינטרנט שלי. תוספים רבים החלו לזרוק את הפלט שלהם בטבלה הזו והיא מתמלאת… טבלה של 9.2 ג'יגה-בייט גרמה למארח שלי לוותר על זמן ההתמודדות שלו. עכשיו אני חותך עם הקוד הנחמד!
רק שאלה על השולחן הזה “wpb_action_scheduler_purge” האם זה ברירת מחדל ב-db או שאני צריך לשנות את שמו למשהו ב-db שלי (כברירת מחדל ה-db שלי לא נקרא 'wp_’ ) או אולי זו פונקציה?
תודה על העזרה והמאמר הסופר נחמד
בְּרָכָה
נצי