有些特殊的系統中,要求同一時間,只能有一個人能夠修改系統數據,這時其他人修改數據時,處于“鎖”的狀態,只有修改數據的人退出時其他人才可進行修改操作。
我們通過設置一個全局開關變量(application),當第一個用戶修改數據時,將該變量至為一個表示鎖狀態的值(例如lock),其他用戶要修改數據前,檢查是否能夠修改,通常一下幾種情況將該修改權釋放(將變量置為unlock)
1.修改數據的用戶退出系統
2.修改數據的用戶長時間不操作
3.修改數據的用戶關閉ie
第一種情況,我們可以通過用戶點擊“退出”按鈕時處理;
第二種情況,用戶長時間不操作我們可在session_end事件中處理,具體這個時間長度可以在web.config中設置
(session_end事件的觸發條件,session.abandon()或長時間未操作都能夠觸發該事件)
第三種情況,用戶關閉ie,如果不處理這種情況,其實并不是application對象永遠處于鎖的狀態,ie關閉后session_end事件依然能夠觸發,也就是系統將一直等到session_end事件觸發時才能釋放該資源,但是這樣不是很好,如果觸發session_end事件的時間是1小時...此種情況我們可以在頁面中下入javascript,當用戶關閉頁面時,跳轉到一個處理退出的頁面,處理完畢后馬上自動關閉。
function window_onunload() {
{
if (event.clientx < 0 && event.clienty < 0)
window.open('logout.aspx','','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,top=2000,left=2000,width=0,height=0');
}
我們在logout.aspx頁面中將application變量解鎖
這個問題在一些其他的應用中也同樣存在,例如網站的實時在線用戶列表
新聞熱點
疑難解答
圖片精選