wp_woocommerce_sessions גדולות מדי במסד נתונים [איך לתקן]

כפי שאמרתי במאמרים אחרים, WooCommerce הוא מודול חזק וגמיש יותר ויותר, המסוגל להפוך את וורדפרס ל- חנות מקוונת אידיאלית לעסק בתחילת הדרךו

עבור חנות מקוונת בגודל צנוע, ניתן להפעיל WooCommerce גם ב-a “אירוח משותף”, יכולת לתמוך בקלות ב-5,000 מוצרים / 100 הזמנות ביום, אם ערכת הנושא שבה נעשה שימוש אינה צורכת משאבים רבים ואינך עושה שימוש לרעה במודולים אחרים (תוספים).

אופטימיזציה של קוד המקור מהנושא (WP Themes), מודולים (WP Plugins) ו אופטימיזציה של מסד הנתונים יש גם שני היבטים שבהם עלינו להיזהר מאוד.

שמתי לב לפני כמה ימים שמתחילה חנות מקוונת קטנה צורך כמויות אדירות של משאבי זיכרון RAM ו-CPU בשרת ייעודי נָדִיב. צריכה גבוהה זו של משאבים הובילה באופן מרומז לא “לִטעוֹן” גדל בשרת וזמן טעינה ארוך של דפי החנות ה-Onine.

כאשר אנו מבחינים בעומס גבוה באופן בלתי סביר על שרת אינטרנט, כדאי לחקור היטב את הסיבות, לפני נקיטת אמצעים.

במסד הנתונים שמתי לב שהטבלה “wp_woocommerce_sessions” הוא גדול מאוד. זה היה מעל 6GB. נפח עצום לטבלה במסד נתונים שבדרך כלל לא עלה על 100 MB בסך הכל.

מה זה wp_woocommerce_sessions?

כפי שאנו יכולים אינטואיציה משמו, השולחן “wp_woocommerce_sessions” מכיל הפעלות PHP (הפעלות PHP).
הפעלות אלו הן פעולות של משתמשי האתר (או רובוטי אינטרנט) ולרוב הם מגיעים למסד הנתונים באמצעות עוגיות. ב-wp_woocommerce_sessions מאוחסנים נתונים על המוצרים שהציבו המשתמשים בעגלת הקניות, קופונים, דמי משלוח, נתוני לקוחות ועוד מידע רב הקשור לתהליך הזמנת המוצר.

הפעלות אלו נוצרות גם אם המשתמש רשום באתר או לא ובדרך כלל חייב לפוג ולמחוק באופן אוטומטי לאחר זמן מה.

למרבה הצער, לא תמיד קורה שההפעלות הללו נמחקות, ובמקרים מסוימים הן נשארות מאוחסנות לצמיתות ב-wp_woocommerce_sessions, מה שגורם לטבלה זו להגיע לנפח די גדול.

איך נמחק את הטבלה wp_woocommerce_sessions דין SQL?

1. אנחנו הולכים לוּחַ מַחווָנִיםWooCommerceסטָטוּסכְּלֵי עֲבוֹדָה (כרטיסייה).

2. גלול מטה לאפשרות “הפעלות לקוחות ברורות“. זָהִיר! מחיקת הפעלות של לקוחות פירושה מחיקת כל המוצרים שהונחו על ידם בעגלת הקניות. אם בזמן מחיקת הפעלות אלו ישנם לקוחות שיש להם מוצרים בסל, הם ייעלמו, וההזמנה האפשרית באינטרנט לא תושלם.

3. לחץ “בָּרוּר” ואשר את הפעולה.

ברגע זה השולחן “wp_woocommerce_sessions” ריק, כך שכל הפעלות של לקוחות קניות נמחקו.

הבעיה רחוקה מלהיות נפתרה. טבלת SQL wp_woocommerce_sessions תאסוף בה שוב נתונים וכברירת מחדל היא תזכה שוב לפרופורציות, מה שלא רצוי.

כיצד אנו מונעים מאחסנים קבועים של הפעלות של לקוחות ב-WooCommerce – wp_woocommerce_sessions?

הראיתי למעלה כיצד ניתן לרוקן את השולחן “wp_woocommerce_sessions” ממסד הנתונים, אך הבעיה תופיע שוב לאחר מספר ימים כאשר הפעלות של לקוח יתאספו שוב.

לפני WooCommerce 2.5, הפעלות של לקוחות נלכדו באמצעות עוגיות, ולאחר מכן נשמרו בטבלת וורדפרס “wp_options“ו
עבור חנויות גדולות יותר, שיטה זו הובילה לעתים קרובות לאסונות. “wp_options” להיות הטבלה החיונית של וורדפרס, המשמשת את האפשרויות וההגדרות הכלליות. זיהוי ומחיקה ידנית של הפעלות לקוחות המאוחסנות ב wp_options זו לא בדיוק הייתה עבודה קלה.
ביצועי WooCommerce לא היו הטובים ביותר, ויכולת הרחבה לאורך זמן הייתה נקודה רגישה.

עם שחרורו של WooCommerce 2.5 בשנת 2015, מפתחי WooCommerce הציגו מערכת חדשה לטיפול ואחסון של מפגשי WooCommerce, המבוססת על מנהל הפעלות של WP. מערכת זו הובילה להופעתה wp_woocommerce_sessions. טבלה ייעודית להפעלות לקוח, אשר במסד הנתונים לא אמורה לקיים אינטראקציה עם טבלאות אחרות. במקרה של טעויות גדולות, ההפסדים צריכים להיות מינימליים.

לפי מה שראיתי, לחנויות מקוונות שהושקו לפני WooCommerce 2.5 ואשר קיבלו עדכונים מתמידים לאורך זמן, יש כמה בעיות בנוגע למחיקה אוטומטית של הפעלות של לקוחות. ככל הנראה מדובר בבאג שהופיע בגרסה חדשה יותר של WooCommerce 2.5 או תוסף WordPress / WooCommerce שלא עקב עדכונים.

במקרה שלי זה היה התנגשות עם פונקציה שנוספה לקובץ functions.php של הנושא, ואיזה מונע את המחיקה האוטומטית לאחר זמן של פגישות שפג תוקף מ woocommerce_sessionsו
אם אתה מתמודד עם בעיה כזו, עליך לחקור היטב את כל הסיבות האפשריות. שגיאת SQL, הרשאות SQL, Cron Job, התנגשויות עם תוספים אחרים ואחרון חביב, בדוק את השינויים שביצעת בקוד לאורך זמן.

ראיתי ש-WooCommerce מציעה עבור 29$ בלבד תוסף המסוגל לנהל הפעלות של לקוחות. “נקה עגלה והפעלות עבור WooCommerce“. כמובן, מלבד המחיקה המתוזמנת של הפעלות, למודול יש כמה כלים שיכולים לעזור לך.

אפשרות פשוטה יותר של מחיקה מתוכננת א “woocommerce_sessions” במרווחים של יום אחד, זמין עם הקוד הבא ב functions.php:

// clean cart every day
if (!wp_next_scheduled('cron_wc_clean_cart')) {
    wp_schedule_event( time(), 'daily', 'cron_wc_clean_cart' );
}

add_action ( 'cron_wc_clean_cart', 'wc_clean_session_cart' );
function wc_clean_session_cart() {
    global  $wpdb;

    $wpdb->query( "TRUNCATE {$wpdb->prefix}woocommerce_sessions" );
    $wpdb->query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key='_woocommerce_persistent_cart_" . get_current_blog_id() . "';" );
    wp_cache_flush();
}

השאר תגובה אם אתה צריך עזרה או יש לך פתרון אחר.

נלהב מהטכנולוגיה, אני כותב בהנאה באתר stealthsetts.com החל משנת 2006. יש לי חוויה עשירה במערכות הפעלה: MacOS, Windows ו- Linux, אך גם בשפות תכנות ופלטפורמות בלוגים (WordPress) ולחנויות מקוונות (Woocommerce, Magento, Presashop).

Home המקור שלך להדרכות IT, טיפים ושל חדשות שימושיות. wp_woocommerce_sessions גדולות מדי במסד נתונים [איך לתקן]

1 חשב על "wp_woocommerce_sessions גדולות מדי במסד נתונים [איך לתקן]”

  1. אין לי דרך למחוק את הנתונים. זה שוקל 500MB ויש לי הגבלה של 1000MB. ברגע שאני מוחק הכל, הוא מתמלא שוב לגמרי.…פתרון כלשהו?

    תְגוּבָה
השאירו תגובה