|
صفحة: 139
application . setAttribute ( "siteCounter" , siteCounter ); עדכון סטטוס משתמש קיים : " + ( Integer ) application . get Attribute ( "siteCounter" )); } session . setAttribute ( "user" , "exsist "); // עד כה מספר המבקרים באתר html > body > % > out . print ( " עתה , משעדכנתם את מונה המבקרים , הריצו את הדף site Counter . jsp בשני חלונות דפדפן נפרדים – פתחו חלון דפדפן נוסף והעתיקו את כתובת הדף . היכנסו לאתר באמצעות כל אחד מהדפדפנים . שאלה 3 . 17 עדכנו את מונה המבקרים שכתבנו בדוגמה כך שיעדכן את המונה רק אם המשתמש הוא משתמש חדש באתר . הריצו את הדף , ובדקו שמונה המבקרים לא משתנה עם כל רענון של הדף . בכניסה הראשונה לאתר מה יעודכן ראשון – התכונה application או התכונה user של session ( שתקבל את הערך ?( "none " ב . כניסה בו-זמנית של כמה משתמשים לאתר נניח עתה כי ארבעה משתמשים נכנסים בו-זמנית לאתר שיש בו מונה מבקרים . כל אחד מהמשתמשים יוסיף 1 למונה המבקרים , אך כיוון שארבעתם נכנסו לאתר בו-זמנית , הם מתייחסים לאותו ערך של מונה המבקרים . לדוגמה , אם מונה המבקרים היה עד לכניסתם , 100 הרי שעבור כל אחד מהם מבצע השרת את החישוב , 100 + 1 ושומר את התוצאה במונה המבקרים . לאחר כניסתם יעודכן המונה לערך , 101 אף-על-פי שמספר המבקרים הוא . 104 בעיה זו נקראת בעיית התנגשות , והיא מתרחשת כאשר מספר תהליכים פונים למשאב משותף . בדוגמה שלנו : המונה הוא המשאב המשותף . כמה משתמשים עלולים לעדכן בו-זמנית את התכונה siteCounter של . application כדי לפתור בעיית התנגשות זו נצטרך ליצור מצב שבו רק משתמש אחד יוכל לעדכן את התכונה בכל זמן נתון . לשם כך , נשתמש
|
|