2014-01-16 2 views
0

인트라넷 내에 헬프 데스크 시스템을 구축했습니다. 일반적으로 시스템은 훌륭하게 작동합니다. 그러나, 나는 어려움을 겪고있는 약간의 기능을 추가하고 싶습니다. 사용자가 도움말 티켓을보고있을 때 다른 사용자가 해당 페이지를 볼 때 다른 사용자가 현재 티켓에서 작업 중임을 알리는 것과 같은 일종의 "잠금"또는 "알림"이 표시됩니다. 제가 가진 문제는 저의 소그룹에서조차도 동시에 같은 티켓에서 일하는 것을 종종 발견 할 것입니다. 티켓을 열었을 때 누군가가 이미 작업 중임을 알리는 알림을받을 수 있다면 작업에 두 배로되지 않는 것이 정말 도움이 될 것입니다.기본 ASP : 다른 사용자가 현재 페이지를보고있는 경우 사용자에게 알립니다.

저는 현재 사이트에 대해 다음과 같은 기술을 사용하고 있습니다 : 기본 ASP, JavaScript, JQuery 및 SQL 백업 데이터베이스.

SQL 데이터베이스의 티켓 내에 "locked"및 "lockedBy"필드를 코딩하는 방법에 대해 생각해 보았습니다. 티켓이 열리면 데이터베이스는 "locked"= Y 및 "lockedBy"=로 업데이트됩니다. 그런 다음 페이지가 닫히거나 탐색하거나 티켓을 업데이트하면 "잠김"이 "N"으로 변경되고 "lockedBy"가 "NULL"로 변경됩니다.

나는 어떤 제안이라도있다.

+0

아마 이것은 programmers.stackexchange.com에 더 적합할까요? 그리고 그것은 '보류시기와 방법'이라는 매우 일반적인 문제입니다. 네가 대답을 찾지 못해서 놀랍다. –

답변

0

load 및 beforeunload 페이지에서 ajax 호출을 사용하여 티켓이 다른 사람이보고 있음을 나타내는 데이터베이스를 업데이트했습니다.

0

모든 사용자 사이에 상태를 공유하는 응용 프로그램 개체 (또는 그 문제에 대한 데이터베이스) 가능합니다, 여기 VBScript를 버전과 같습니다

function ClaimTicket(byval ticket, byval user, byref claimedby) 
    on error resume next 
    dim key 
    key = "TICKET." & ticket 
    application.lock 
    if (application(key) = "") then 
     application(key) = user 
     ClaimTicket = true 
     claimedby = user 
    else 
     claimedby = application(key) 
    end if 
    application.unlock 
end 

잠금 및 그 some-을 방지하기 neccesary 있습니다 잠금을 해제 다른 사람이 티켓을 요구하려고합니다. 이 함수는 티켓을 요구 한 사람의 이름을 반환합니다. 코드는 아직 테스트되지 않았습니다.

1

일부 응용 프로그램에서 비슷한 작업을 수행하고 데이터베이스에 잠금 상태, 사용자 및 날짜를 ​​저장합니다.

문제는 사용자가 브라우저를 닫으면 잠금 해제되지 않는 것입니다.

특정 날짜보다 오래된 날짜의 잠금을 무시하면이 문제를 해결할 수 있습니다 (예 : 잠금 날짜가 2 시간 이상이고 잠금을 무시한 경우).

브라우저 창을 열었을 때 정기적으로 잠금 날짜를 업데이트하는 JavaScript 타이머에서 AJAX 루틴을 실행하면이 기능을 더 향상시킬 수 있습니다. 예를 들어 매분마다 AJAX 호출을 실행하여 잠금 시간을 업데이트하면 1 분 이상 된 잠금을 무시할 수 있습니다.

관련 문제