counter ב- ASPNET

gilad g

New member
באופן כללי, כן

פשוט נוספו לו עוד אירועים כמו Application_OnError, וכו'...
 

amera

New member
האם מותר או מומלץ להתקשר למסד נתוני

האם מותר או מומלץ להתקשר למסד נתונים ב- GLOBAL.ASA
 

gilad g

New member
אם הקאונטר שלך מבוסס מסד נתונים

אין לך ברירה, לא
 

amera

New member
I think application-error might sol

I think application-error might solve my problem. Does it? My counter keeps starting from 0 every few weeks and I never have the total number of visitors. Does application-error solve this and how? thanks​
 

gilad g

New member
אתה מבלבל אותי..

הקאונטר מבוסס מסד נתונים או משתנה Application
אם הוא מבוסס Application, אז הוא מתאפס בגלל restart של האפליקציה שלך...
 

amera

New member
עד עכשיו אני עובד עם משתנה

APPLICATION , אבל מאחר ויש לי בעיות עם זה אני מנסה לעבור למסד נתונים. אבל אם APPLICATION-ERROR פותר את הבעיה אזי אין צורך לעבור למסד נתונים
 

amera

New member
והאם למען זה, זה יצדיק DATASET

לעדכון ה- COUNTER בטבלה (שהיא בסך הכל רשומה אחת עם שדה אחד, לא!) ולשליפת הערך החדש ב- application("counter") ??
 

gilad g

New member
../images/Emo35.gif

מי דיבר על dataset
אל תשתמש בכלל ב-Application, אם אתה שומר את הערך במסד נתונים... כל מה שאתה צריך לעשות זה להריץ שאילתת UPDATE פשוטה, ע"י אובייקט Command. כמו כן, אני מאוד ממליץ לך לשמור את הערך ב-Cache (עם timeout, כמובן), כדי לא לשלוף את הערך כל פעם מחדש מהדטאבייס ..
 

amera

New member
בשביל להציג את ה- COUNTER בדף

מסויים אני צריך לשלוף אותו! לא הבנתי למה אחרי השליפה לא לאחסן אותו במשתנה APPLICATION? וסךיחה על הבורות, איך אני שומר את הערך ב- CACHE
 

gilad g

New member
אוקיי אתה מבולבל לגמרי..

בוא נעשה לך סדר בראש... קודם כל, משתנה cache הוא כמו משתנה Application, אלא שהוא נמחק לאחר זמן מה, והוא גם תומך ב-dependencies, וכו'... (dependencies לא קשור עכשיו...) סדר הענינים הוא כדלהלן: 1. גולש נכנס לאתר, מתרחש Sesion_OnStart, ושם אנחנו מריצים את שאילתת ה-UPDATE שלנו. 2. לאחר מכן, גולש מבקש לצפות ב-counter. 3. אם משתנה ה-cache ריק, אז שולפים את הערך מה-DB, שומרים אותו ב-cache (עם timeout, וכו'), ואז מציגים אותו לגולש. אם הוא לא ריק, לוקחים את הערך מה-cache, ולא מה-DB. לגבי שמירת/טעינת ערכים מ/ל-cache, אתה יכול לקרוא פה: http://aspnet.4guysfromrolla.com/articles/100902-1.aspx
 

amera

New member
להלן מה שעשיתי,

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs) ' Fires when the session is started Dim strConn As String = _ "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & server.mappath("...\data\vocabularyasp.mdb") Dim conn As OleDbconnection=New OleDbconnection(strConn) Dim cmd As New OleDbCommand(sql, conn) Dim sql As String = "UPDATE CounterTable SET Counter = Counter + 1" Application.Lock() conn.Open() cmd.ExecuteNonQuery() conn.Close() Application.UnLock() End Sub​
זה מעדכן את ה- COUNTER. אבל עדיין אני צריך DATAREADER לשליפת הערך החדש! לא?
 

gilad g

New member
כן

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