→ חזרה

העברת משימות מתוזמנות של וורדפרס אל Cron Job ברמת השרת

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

בעקבות כך זה גורם לנו לכמה תקלות שאנחנו רוצים לפתור:
1. מהירות טעינת האתר נפגעת (לפעמים בצורה מאוד משמעותית) מפני שוורדפרס מריץ משימות בזמן הטעינה של האתר.
2. במידה והאתר לא מקבל מספיק גולשים משימות מתוזמנות לא ירוצו, שכן הרצת המשימה תלויה בגולש שייכנס לאתר.
3. במידה ואין גולשים ומצטברות משימות להרצה אנחנו חוזרים לבעיה 1 – הגולש הבא שניגש לאתר יקבל זמן טעינה משמעותית ארוך יותר שכן וורדפרס מנסה להריץ את המשימות המתוזמנות.

על מנת לפתור בעיות אלו אנחנו רוצים להגדיר את המשימות המתזומנות כ- Cron Job ברמת השרת, כך אנחנו נדע שהמשימות רצות באופן סדיר ולא משפיעות על הטעינה של האתר.
נבצע זאת בצורה הבא:

  1. ביטול המשימות המתוזמנות ברמת הוורדפרס:
    אנחנו מבצעים זאת בכדי למנוע מוורדפרס להריץ משימות מתוזמנות כשגולש ניגש לאתר, כך שהמשימות ירוצו רק כאשר אנחנו נריץ אותן בעצמינו.
    על מנת לבצע זאת נוסיף בקובץ ה- wp-config.php שלנו את הערך הבא:
define('DISABLE_WP_CRON', true);
  1. הוספת משימה מתוזמנת ברמת השרת:
    נבצע זאת דרך ממשק הניהול שלנו – לשונית פיתוח > משימות מתוזמנות
    נוסיף משימה מתוזמנת חדשה עם מחזור מבוסס דקות, נבחר במחזור המתאים לנו – של 30 דקות ומעלה מאחר ואם נבחר פחות מכך זה יכול לגרום לעומסים מיותרים על האתר.
    בפקודת המשימה נבחר curl או wget – שניהם יבצעו את הפעולה בצורה דומה, ובשדה החופשי נזין את הקישור הבא:
    "http://yourdomain.com/wp-cron.php?doing_wp_cron"
    (כמובן נשנה את הדומיין בהתאם לדומיין שלנו, ובמידה ומותקנת תעודת SSL על האתר נוסיף את האות S לאחר ה http, כך שיהיה https://)
    מה שפקודה זו עושה היא להריץ את המשימות המתוזמנות של וורדפרס בצורה ידנית.

אפשרות נוספת ללקוחות בעלי שרתי VPS היא להריץ את המשימות ברמת שורת הפקודה במקום לגשת לאתר, כך נחסוך אפשרות לתקלות של Timeout המגיעות משרת ה- Web (Nginx/Apache).
נגדיר את המשימה באותו אופן של מחזור מבוסס דקות, אך בפקודה נבחר באופציה "מתקדם"
ובשורת הטקסט חופשי נזין את הפקודה הבאה:

cd ~/public_html; php -q wp-cron.php

בתרגום ל Cron Job רגיל אנחנו נגדיר זאת בצורה הבא, אך לקוחות uPress יכולים להגדיר זאת בממשק הניהול שלהם כפי שהוסבר בשלב 2 הנ"ל

*/30 * * * * curl --silent "http://yourdomain.com/wp-cron.php?doing_wp_cron" >/dev/null 2>&1
→ חזרה

עדיין זקוקים לעזרה?