אתרים יכולים להפעיל משימות מתוזמנות עם Cron

שָׁעוֹן

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

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

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

מה זה קרון?

Cron נקרא על שם המילה היוונית כרונוס, שמשמעותה זמן. Cron פועל בלולאה רציפה להפעלת משימות שנצברות על ידי Crontab (אולי על שם כרטיסייהכיב. משימות אלה מכונות בדרך כלל Cronjobs ויכולות להפנות לתסריטים באתר שלך.

הסבר דיאגרמת קרון

כיצד ניתן להתקין את Crontab

לגרום לקרון לרוץ בפועל יכול להיות מאתגר, אז הנה מה שלמדתי ואיך עשיתי את זה בשבילו אם תמצוץ:

  1. הגדרתי את התסריט שלי כדי לבדוק את הטוויטר API לראות אם מישהו ענה לו @ ifsuck. השוויתי את ההודעות האלה להודעות שכבר שמרתי באתר, והזנתי הודעות חדשות.
  2. לאחר שהסקריפט עבד, אפשרתי למשתמש הרשאות לבצע את הסקריפט (744) והוספתי את התייחסות התסריט לקובץ Cronjob שלי - על כך בהמשך.
  3. הייתי צריך להתחבר לאתר שלי באמצעות SSH. ב- Mac, זה לקח פתיחת טרמינל והקלדה שם משתמש SSH@domain.com שם שם המשתמש היה שם המשתמש בו רציתי להשתמש והדומיין היה האתר. ואז התבקשתי ומסרתי את הסיסמה.
  4. לאחר מכן ניסיתי להפעיל את הסקריפט ישירות משורת הפקודה על ידי הקלדת שם הקובץ והנתיב היחסי בשרת: /var/www/html/myscript.php
  5. לאחר שקיבלתי את זה כהלכה, הוספתי את קוד ה- Unix הדרוש בשורה הראשונה של הקובץ: #! / usr / bin / php -q . אני מאמין שזה פשוט אומר ליוניקס להשתמש ב- PHP לצורך ביצוע התסריט.
  6. בשורת הפקודה טרמינל הקלדתי crontab (אחרים עשויים להזדקק להקליד -e crontab) ולחץ על Enter ... וזה היה כל מה שנדרש!

תחביר לקובץ Cronjob שלך

לגבי מספר 2 לעיל, Cron משתמש בתכנית גאונית לקביעת מתי התסריטים שלך יבוצעו. למעשה, אתה באמת יכול להעתיק ולהדביק את זה ב- Cronfile שלך ​​(אצל המארח שלי הוא נמצא ב / var / spool / cron / עם שם הקובץ זהה לשם המשתמש שלי).

# + —————- דקה (0 - 59)
# | + ————- שעה (0 - 23)
# | | + ———- יום בחודש (1 - 31)
# | | | + ——- חודש (1 - 12)
# | | | | + —- יום בשבוע (0 - 6) (ראשון = 0 או 7)
# | | | | |
* * * * * /var/www/html/myscript.php

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

30 * * * * /var/www/html/myscript.php

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

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

משאבי קרון נוספים:

כמה משרות תוכלו לבצע אוטומציה באמצעות Cron?

תגובות 8

  1. 1

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

  2. 2

    היי דאג,

    כמה דברים שיש לקחת בחשבון בעת ​​עבודה עם עבודות cron.

    ראשית, אחרי כמה עשרות, היית רוצה שיהיה לך ממשק משתמש, מסד נתונים ותחביר למראה אנגלית 😉

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

    לאחר מכן, אין כמעט דיווח על שגיאות כשמשהו משתבש, לכן יהיה עליך להוסיף דיווח שגיאות משלך.

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

    כריס

  3. 4

    אוסיף גם כי ברוב מערכות הלינוקס / יוניקס, "crontab -e" הוא מה שאתה משתמש בו כדי לערוך את crontab שלך. אני חושב שהמארח שלך (Jumpline) משתמש בגרסה שונה משיקולי אבטחה.

  4. 5

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

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

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

  5. 7

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

מה אתה חושב?

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