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

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

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

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

שמתי לב לפני כמה ימים כי חנות מקוונת של גדלים modeזה מתחיל לצרוך משאבי RAM רבים מאוד ו CPU בשרת ייעודי נָדִיב. צריכת משאבים גבוהה זו הביאה ל"עומס "מוגבר על השרת ולזמן טעינה ארוך של דפי החנות המקוונת.

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

בבסיס הנתונים שמתי לב שהטבלה "wp_woocommerce_sessions"זה ענק. היו לו מעל 6 ג'יגה-בתים. נפח עצום לטבלה במסד נתונים שבדרך כלל לא עלה על 100 מגה בייט בסך הכל.

מה זה wp_woocommerce_מפגשים ?

כפי שאנו יכולים לנחש משמו, הטבלה "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, הפעלות של לקוח נלכדו באמצעות קובצי Cookie, שיישמרו בטבלה מאוחר יותר WordPress "wp_options
עבור חנויות גדולות יותר, שיטה זו הובילה לעתים קרובות לאסונות. "Wp_options"להיות השולחן החיוני של WordPress, בשימוש על ידי אפשרויות והגדרות כלליות. זיהוי ומחיקה ידנית של הפעלות לקוח המאוחסנות ב 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();
}

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

כחובב טכנולוגיה, אני כותב בשמחה ב- StealthSettings.com מאז 2006. יש לי ניסיון עשיר במערכות הפעלה: macOS, Windows, ו- Linux, וגם בשפות תכנות ופלטפורמות בלוגינג (WordPress) ולסוחרת אלקטרונית (WooCommerce, Magento, PrestaShop).

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

מחשבה אחת על “wp_ גדול מדיwoocommerce_sessions במסד נתונים [איך לתקן]"

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

    תגובה
השאירו תגובה