수고하십니다.
제가 api로 안드로이드와 연결해서 포인트 차감하는 시스템을 만들었습니다.
그런데 이게 어플에서 같은 아이디로 동시에 데이터를 전송해버리는 경우가 발생하더라고요
만약 보유 포인트가 4000포인트인데 4000포인트를 사용해서 0가 되어야 하는데 동시에 2번 들어오니까
-인지 체크를 할수가 없더라고요 그래서 사용자 보유포인트가 -4000이 되어버리는거죠
$msg.="TOPUP CARD CHARGE ".date("m/d/Y H:i:s");
$in_point=insert_point($mb['mb_id'], $chk[topup_point]*-1, $msg);
포인트는 이렇게 차감하고 있습니다.
이런경우를 겪어보신분 조언좀 부탁드립니다.
감사합니다.
답변 3개 / 댓글 2개
채택된 답변
+20 포인트
2016-12-20 (화) 22:37:41
$rel_table 위치에 date("m/d/Y H:i"); <-- 이렇게 넣으면 분 단위로 시간이 다른 경우는 입력 되고 초 단위로는 입력 되지않게 될테니 동시에 2번 기록은 안될 것입니다
2016-12-20 (화) 15:13:18
function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='', $expire=0, $repeat=0)
<-- 1 , 4,5,6번 파라메터가 동일하면 한번만 기록 됩니다
답변에 대한 댓글 1개
2016-12-20 (화) 15:24:53
음 일단 동시에 2번 들어오는 원인을 찾으셔야 될 듯 하네요.
임시조치로는 insert 될 때 mb_id를 기준으로 체크를 한번 하시고 차감을 하셔야 겠습니다.
답변에 대한 댓글 1개
2016-12-20 (화) 15:22:35
일단 어플쪽에서 고유값을 보내고
그걸 업데이트해서 체크하는 방법과 포인트 합산할떄 - 이면 차감 안되게 수정했습니다.
이것 말고는 딱히 생각나는게 없어서요
그걸 업데이트해서 체크하는 방법과 포인트 합산할떄 - 이면 차감 안되게 수정했습니다.
이것 말고는 딱히 생각나는게 없어서요
답변을 작성하려면 로그인이 필요합니다.
그래서 $msg.="TOPUP CARD CHARGE ".date("m/d/Y H:i:s"); 날짜부분을 넣었고요