לעמוד בתור - ניהול תורות באפליקציה.

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

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

לשם כך נצטרך לבנות מערכת שתדע לנהל את המשימות.

  • לשמור את המשימה בתור

  • לשמור את המידע החשוב לביצוע המשימה. למשל מי המשתמש שמבצע את המשימה? בבקשת request רגילה יש לנו את המידע כיוון שהוא נמצא בsession אבל בתהליך שרץ ברקע המידע לא קיים כי אין request.

  • להריץ את המשימות שנמצאות בתור, אחת אחרי השניה או לפעמים לפי חשיבות.

  • ליידע את המערכת בהצלחת או בכשלון המשימה

להריץ את המשימות שנמצאות בתור אחת אחרי השניה או לפעמים לפי חשיבות וכמובן ליידע את המערכת האם המשימה הצליחה או נכשלה.

ניהול התורות הוא חלק מובנה בכל אפליקציית Laravel.

אתה בוחר היכן לנהל את התורות זה יכול להיות Redis, Amazon SqS או MySql ועוד. אתה מגדיר זאת בקובץ ההגדרות queue.php שנמצא בכל אפליקציית Laravel.

מרים supervisor בשרת שיהיה אחראי להריץ את התהליך שאחראי על פעולות הרקע.

וסיימת להקים את המערכת ניהול התורות שכתבנו למעלה.

ועכשיו רק נותר לך ליצור קובץ Job בעזרת הartisan. שזו מחלקה רגילה בphp עם פונקצייה בשם handle שבה כותבים את הקוד שאמור לרוץ ברקע.    

Job Batching

בנוסף לארבל מאפשר לך לנהל בקלות קבוצה של Jobs שאמורים לרוץ ברקע ובסיום לעשות פעולה נוספת. למשל אחרי שישלחו כל המיילים ישלח מייל למנהל שכל המיילים נשלחו בהצלחה.

אפשרות נוספת היא לייצר loader אשר מראה את ההתקדמות. בעזרת הBatche ניתן לראות כמה jobs נשארו עד לסיום המשימה.

גם מימוש זה הוא מאוד פשוט. להריץ פקודה שתעדכן את מסד הנתונים ולאחר מכן להגדיר שזה job שהוא batchable.

כל הדברים הללו וכיצד להרים אותם ניתן לקרוא בדוקומנטציה המאוד ברורה :

Queues - Laravel - The PHP Framework For Web Artisans

Laravel Horizon

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

לצורך זה יצרו בלארבל את Laravel Horizon. ממשק אשר מראה לך בדיוק מה קורה מתחת לפני השטח כמה Jobs רצים מי הצליח והאם יש בעיות performance.

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

Laravel Horizon - Laravel - The PHP Framework For Web Artisans

לסיכום:

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