PHP에서는 고유 번호를 생성 할 때 항상 확신 할 수 없습니다.고유성 :`time()`Vs`mt_rand()`
time()
은 mt_rand()
보다 고유합니까?
time()
은 시간이 두 번 반복 될 수 없기 때문에 나에게 고유 한 것처럼 보입니다.
mt_rand()
PHP의 기본 정수가 제공하는 고유 한 정수에 대해 확실하지 않습니다. 고유 한 정수가 시간에 따라 반복됩니까?
PHP에서는 고유 번호를 생성 할 때 항상 확신 할 수 없습니다.고유성 :`time()`Vs`mt_rand()`
time()
은 mt_rand()
보다 고유합니까?
time()
은 시간이 두 번 반복 될 수 없기 때문에 나에게 고유 한 것처럼 보입니다.
mt_rand()
PHP의 기본 정수가 제공하는 고유 한 정수에 대해 확실하지 않습니다. 고유 한 정수가 시간에 따라 반복됩니까?
uniqid()
을 고려해 보셨나요?
또한 실제 질문에 답하면 : time()
과는 달리 mt_rand는 결국 숫자를 반복합니다. 그러나 고유하게하려면 초당 한 번만 time()
을 사용할 수 있습니다.
예하지만 uniqid는 다음과 같습니다. 4b3403665fea6에 알파벳이 포함되어 있습니다 ... 정수 만 원합니다. 감사. – laukok
자, 여러분은'base_convert'를 다음과 같이 사용할 수 있습니다 :'base_convert (uniqid(), 16,10)'이것은 고유 한 int가 될 것입니다 –
오, 저는 int가 매우 높다는 코멘트에 덧붙이고 싶습니다. 32 비트 시스템을 사용하고 있다면'uniqid()'에서 처음 2 바이트를'substr()'하는 것이 좋다. –
많은 사용자가 time()
을 동시에 사용하는 경우 동일한 초에 두 개의 이벤트가 발생하여 time()
이 mt_rand()
처럼 고유하지 않을 수 있습니다. mt_rand()
을 사용하면 거의이라는 결과가 보장되지만 그렇지 않을 수도 있습니다.
또 다른 방법은 이벤트가 같은 마이크로에서 발생하는에 대한 특별한 것이 당신에게 독특한 스탬프를 줄 것이다 마이크로 현재 시간을 반환 microtime()
을 사용하는 것입니다. 또한 대부분 내부적으로 microtime()
를 사용하여 마이크로 현재 시간 (에서 ID를 생성 uniqid()
을 고려할 수
시간 (사용) 고유 ID를위한 좋은 아이디어는 보통 아닌, 몇 가지 이유 :.
mt_을 기반으로 ID를 추측하기 상당히 쉽다 rand는 동일한 값을 두 번 생성 할 수 있지만 그 확률은 시간이 유닉스 시대 이후 초를 반환하고 두 번 반복 될 수 없다고 생각할 수 있습니다. 그러나 1 초마다 두 번 이상 호출 될 경우 mt_rand가 다른 값을 반환하는 동일한 결과를 반환한다는 것을 의미하는 매 초마다 변경됩니다.
선택 사항은이 숫자를 사용하려는 용도에 따라 달라집니다. – deceze
MySQL에서 페이지 또는 제품 ID를 만들 수있는 'AUTO_INCREMENT'처럼 사용하고 싶습니다. 동일한 정보를 공유하는 두 개의 테이블을 가지고 있기 때문에 'AUTO_INCREMENT'를 ID 고유성으로 사용할 수 없습니다. – laukok
테이블 중 하나에서'AUTO_INCREMENT'을 사용할 수없고 다른 테이블에 대해 생성 된 ID를 사용할 수 없습니까? mysql_insert_id가 도움이 될 수있다. – poke