주문시 get_uniqid 를 쓰는이유가뭘까요?

주문시 get_uniqid 를 쓰는이유가뭘까요?

QA

주문시 get_uniqid 를 쓰는이유가뭘까요?

본문

안녕하세요?

 

영카트에서 주문할때 

get_uniqid

를 쓰는 이유가 뭘까요?

 

이걸 돌려보니 php문서 수행시간도 좀 잡아먹는것같더라구요. 100분의 1초도 쉬고.

 

오토인크레먼트를 안쓰고 , 연산과 일정의시간이 필요한 유니크아이디를 발급하면서까지 쓰려는이유는 뭘까요?

 

 

 

이 질문에 댓글 쓰기 :

답변 4

이걸 돌려보니 php문서 수행시간도 좀 잡아먹는것같더라구요. 100분의 1초도 쉬고.<---------

uniqid가 오래된 레코드를 삭제하는 루틴이 없어 그누 방식에 문제가 조금 있다고 생각 됩니다

계속해서 테이블에 누적시켜나가는데 며칠만 지나도 엄청 레코드가 쌓입니다

uniqid를 생성하여 디비에 insert시킬때 중복되는 값인지 판별하여 중복이 아닐때까지 loop를 돌리는 방식인데 날짜, 시각을 이용하여 생성하므로 예를들어 생성된지 1시간 또는 1일 지난 값과는

중복이 일어날 수가 없으니 비교할 필요가 없고 레코드 수가 적으면 그만큼 생성 시간도 줄어들 것입니다

 

생성일자를 기록하는 필드를 추가하여

하루에 한번씩 1일 지난 레코드는 삭제하는 코드를 만들어 넣는 것이 좋을 것이라 생각됩니다

 

 

 

 

아.. Auto_Increment 가 생각보다 문제가 많네요..  저는 동접이 아무리 많아도 SQL 에서 알아서 중복되지않게 순차적으로 발행돼는줄알고있었는데..  이노디비로 쓰면  이전의 번호가 다시 발행되는문제의 이슈도있네요.. 허참..

활성화 된 사이트에는 동시다발적으로 수백명이 접속하기 때문에

그때 주문고유번호를 개별적으로 유니크하게 할당해주기 위해서 입니다.

이름그대로

 

get unique  

 

고유번호를 추출하는 로직입니다.

 

1/1000000 초에라도 동시에 채번을 할경우

실제로는 그보다 더 긴시간도 동시번호가 발생가능합니다.

 

고유한 번호가 안되기때문에 최대한 고유번호를 만드는 것이 실제 현장에서 많이 필요합니다.

 

더군다나 주문번호/장바구니번호 같은 값들은 

중복되면 내 물건이 다른사람에게 가거나, 다른사라물건을 내가 결제하거나 하게되면 큰 사고가 되겠죠

 

이런것을 방지하려 함 입니다.

해당부분은 주문번호 생성 부분인데

동일 주문시간에 동일 주문번호가 나오는걸 방지함이 그 목적인것 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,625 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT