묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
PHP 코딩 질문입니다.
2004.04.09 12:35
지금 테스트하려는게 PHP로
e-bank를 클라이언트/서버로 나눠서 입금,출금,송금을 할수있게 만드려는데요
질문드릴것이 두가지가 있습니다.
첫번째로, 클라이언트에서 서버접속해서 로그인한 상태일때 다른 클라인언트가 서버에서
같은 아이디로 로그인을 시도할때 그 계정으로 로그인 못하게 막는것하구요
두번째로, 실제로 은행에서 ATM으로 돈찾을때 갑자기 정전된다던가 ATM이 고장나면
출금이나 송금같은거 취소되야하잖아요...?
그런것처럼 클라이언트가 접속해서 입금,출금, (타계정으로) 송금할때
인터넷이 끊기던가 클라이언트쪽이 문제가 생겨서 중간이 끊길때
서버쪽이 살아있더래도 결과적으로 입금,출금, 송금의 전송이 이루어지지않아야 하는데
이런걸 Idempotent라고 부르는 것같던데요
이거를 어떤 방식으로 구현해야 하는지 조언좀 부탁드립니다.
제발 부탁드려요...
꾸벅~
e-bank를 클라이언트/서버로 나눠서 입금,출금,송금을 할수있게 만드려는데요
질문드릴것이 두가지가 있습니다.
첫번째로, 클라이언트에서 서버접속해서 로그인한 상태일때 다른 클라인언트가 서버에서
같은 아이디로 로그인을 시도할때 그 계정으로 로그인 못하게 막는것하구요
두번째로, 실제로 은행에서 ATM으로 돈찾을때 갑자기 정전된다던가 ATM이 고장나면
출금이나 송금같은거 취소되야하잖아요...?
그런것처럼 클라이언트가 접속해서 입금,출금, (타계정으로) 송금할때
인터넷이 끊기던가 클라이언트쪽이 문제가 생겨서 중간이 끊길때
서버쪽이 살아있더래도 결과적으로 입금,출금, 송금의 전송이 이루어지지않아야 하는데
이런걸 Idempotent라고 부르는 것같던데요
이거를 어떤 방식으로 구현해야 하는지 조언좀 부탁드립니다.
제발 부탁드려요...
꾸벅~
접속을 하면 '접속파일저장폴더/사용자ID.lock' 뭐 이런식으로 해서 사용자의 IP를 기억하는 파일을 만들도록 하고,
계속 접속중이어서 page request가 있다면 해당 파일을 touch해서 파일의 수정시간(filemtime)을 현재시간으로 계속 업데이트 해주고, 접속해제가 되거나 로그아웃 되면 file을 삭제하고,
접속해제를 알수 없을 경우(브라우져를 로그아웃 안하고 닫을 경우) 파일 수정시간을 체크해서 일정시간이 지나면 삭제시킵니다.
또는 해당 파일이 아직 남아있는데 다시 접속할 경우 IP를 체크해서 이리저리 하면 세션을 재정의 한 것과 비슷하게 사용할 수 있겠습니다.
2. 내용을 잘 이해를 못하겠군요. 일단 서버에서 임시처리를 한후 사용자의 확인 응답이 있으면 실제처리를 하는 방식을 구현하시면 될것 같네요.. transaction 을 commit 한것처럼...