테스트 사이트 - 개발 중인 베타 버전입니다

주문시 get_uniqid 를 쓰는이유가뭘까요? 채택완료

차가운잎사귀 6년 전 조회 2,338

안녕하세요?

 

영카트에서 주문할때 

get_uniqid

를 쓰는 이유가 뭘까요?

 

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

 

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

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
6년 전

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

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

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

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

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

 

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

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

 

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

차가운잎사귀
6년 전
생각해보니 그렇네요... 지난 테이블도 결국 조회시에 부담이 될것같은데..
차가운잎사귀
6년 전
아.. Auto_Increment 가 생각보다 문제가 많네요.. 저는 동접이 아무리 많아도 SQL 에서 알아서 중복되지않게 순차적으로 발행돼는줄알고있었는데.. 이노디비로 쓰면 이전의 번호가 다시 발행되는문제의 이슈도있네요.. 허참..

댓글을 작성하려면 로그인이 필요합니다.

플래토
6년 전

이름그대로

 

get unique  

 

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

 

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

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

 

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

 

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

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

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

차가운잎사귀
6년 전
좋은정보감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

그누위즈

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

차가운잎사귀
6년 전
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

차가운잎사귀
6년 전
감사합니다.좋은하루되세요

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인