가능한 중복 :
PHP: How to generate a random, unique, alphanumeric string?PHP에서 고유 한 디지털 ID를 생성하는 방법은 무엇입니까?
이 공식 생산 충돌을합니까?
substr(md5(uniqid(rand()))),0,6)
숫자 (예 : 7 자리)만으로 고유 ID를 생성하는 방법은 무엇입니까?
가능한 중복 :
PHP: How to generate a random, unique, alphanumeric string?PHP에서 고유 한 디지털 ID를 생성하는 방법은 무엇입니까?
이 공식 생산 충돌을합니까?
substr(md5(uniqid(rand()))),0,6)
숫자 (예 : 7 자리)만으로 고유 ID를 생성하는 방법은 무엇입니까?
uniqid는 13 문자 문자열을 생성합니다. 충돌 위험없이 7 문자 또는 7 자리로 줄이는 방법은 무엇입니까? 만큼 새로운 표현으로
uniqid
의 출력을 전치 동안 충돌을 의미로
, 당신처럼 다음을 수행 할 수 있습니다
uniqid
는 13 문자열을 반환, 각 문자가 될 수 0-9
또는 a-f
, 기본적으로 한 자리가있는 16 진수입니다 (소수점 이하 0-15 자리).예 :
$unique = uniqid(); # 13 characters
$sevenPairs = array_map('hexdec', str_split($unique, 2));
printf("Unique ID: %s\nSeven Pairs (digits): %s\n"
, $unique, implode(', ', $sevenPairs));
출력 : 접두사 부분을 활용할 경우 (귀하의 질문에 당신이 rand
를 사용하는) 것을
Unique ID: 4f8ace1eb736a
Seven Pairs (digits): 79, 138, 206, 30, 183, 54, 10
테이크 관리의 retur의 길이 uniqid
에 의한 네 번째 문자열은 13보다 클 수 있습니다.
가장 쉬운 방법은 0부터 시작하여 각 ID에 대해 1 씩 증가시키는 데이터베이스 또는 텍스트 파일에서 가져 오는 것입니다.
$id = strint(file_get_contents('counter.txt'));
file_put_content('counter.txt',++$id);
rand()를 사용하면 동일한 수를 얻을 확률이 더 커집니다. 증분 값을 원하지 않으면 rand를 사용하고 해당 숫자가 이미 데이터베이스와 함께 사용되는지 확인하십시오.
숫자 만 필요하고 충돌을 피하려면 자동 증가 값을 사용하는 것이 유일한 방법입니다. 임의의 임의의 값은 충분한 시간과 충분히 큰 표본을 가진 충돌 가능성이 있습니다. –
귀하의 경우 1000 만 개 이상의 ID를 생성하면 충돌이 100 % 발생합니다. – nico
이 사이트의 다른 유사한 질문도 도움이되지 않았습니까? – DanMan