למי שלא מחובר לפייסבוק ( כמוני למשל ) - ביום שישי האחרון קרס אתר פייסבוק למשך שעתיים בערך.
אמנם אני לא מחובר , אבל תאמינו לי שסיפרו לי מספיק אנשים על הקריסה ( מעבר לכך ששמתי לב שרשמו על זה באתרי החדשות ).
לולאה אין סופית בתכנות גרמה למסד הנתונים של פייסבוק לקרוס.
זה קורה גם לגדולים מסתבר, טעות של מתכנת שהכניס לולאה שאמורה לעשות בדיקה של ערכים למערכת פייסבוק גרמה לשרתים שלהם לעומס רב.
בפועל מה שקרה, במקום שהלולאה תעשה את הבדיקה שלה ותטפל בבעיה, היא פשוט חזרה על עצמה שוב ושוב, וכל פעם שגולשי האתר ניסו להזין מידע , המידע שלהם נכנס ללולאה האין סופית הזו.
בסופו של דבר הפתרון היחיד שלהם היה לסגור את האתר על מנת שיוכלו לייצב את השרתים ולהסיר את קטע הקוד השגוי.
כמאחסן אתרים , לא פעם אני נתקל במשתמשים שמתכנתים לעצמם את המערכות שלהם, אבל לא עושים בדיקות לקוד ... התוצאה ידועה מראש, השרת נכנס ללולאה אין סופית ושרת מסדי הנתונים נסגר תחת הלחץ הרב שמופעל עליו מהאפליקציה שכתובה בצורה שגוייה.
כמובן שישנם אמצעים להגן מפני לולאות שכאלה, אך מסתבר שכשמדובר בשירות בהיקף בגודל של פייסבוק, הם לא בדיוק לקחו בחשבון אפשרות כזאת, ולא בדקו את הקוד שלהם לפני שהכניסו אותו לאתר החיי.
מסיבה זו , תמיד אמליץ לכל מפתח אתרים שמכבד את עצמו - נסיונות וניסויים בקוד - יש לבצע על המחשב האישי שלכם, או על שרת VPS בו לא מפריעים להרמוניה של השירות, הרי לא תרצו שמישהו אחר יעשה לכם את זה גם, לא כך?
( אגב שרת VPS לא אומר שאתם חייבים לרכוש שרת .. יש היום המון פתרונות נחמדים וקלים שיעזרו לכם להריץ VPS על המחשב הביתי שלכם ללא כל בעיה ).
לדעתי המקרה הזה צריך להוות דוגמא לכל מתכנת מתחיל ומתקדם - תמיד תמיד תבדקו את הקוד שלכם מספר פעמים, תכניסו " מכשולים " שיעצרו את הלולאה שלכם במידה ויש שגיאה , איך קוראים לזה בפשטות? sanity check ?
קצת על לולאות אין סופיות: ( אנגלית )
http://php.about.com/od/learnphp/qt/...ur-Program.htm
מקור: ( אנגלית )
http://www.pcworld.com/businesscente...html?tk=hp_new