머리말
PHP uniqid() 함수를 사용하면 마이크로초 단위의 현재 타임스탬프를 기반으로 반복되지 않는 고유 식별자를 생성할 수 있습니다. 동시성이 높거나 간격이 매우 짧은 경우(예: 루프 코드) 중복된 데이터가 대량으로 나타납니다. 두 번째 매개변수를 사용해도 반복되기 마련인데, 가장 좋은 해결 방법은 md5 함수를 결합해 고유 ID를 생성하는 것이다.
현재 시간의 마이크로초 수를 기준으로 접두사가 붙은 고유 ID를 얻으려면
string uniqid ([ string $prefix = "" [, bool $more_entropy = false ]] )
함수를 사용하세요. 접두사 유용한 매개변수입니다. 예를 들어 여러 호스트에 있는 경우 동일한 마이크로초 내에 고유 ID가 생성될 수 있습니다. 접두사가 비어 있으면 반환되는 문자열의 길이는 13입니다. moreentropy가 TRUE인 경우 반환되는 문자열의 길이는 23입니다. moreentropy TRUE로 설정되면 uniqid()는 반환된 문자열 끝에 추가 엔트로피를 추가합니다(결합된 선형 합동 생성기를 사용하여). 고유 ID를 더욱 고유하게 만드세요.
이 메서드는 대량의 반복 데이터를 생성합니다. 다음 PHP 코드를 실행하면 배열 인덱스가 생성된 고유 식별자이고 해당 요소 값이 표시됩니다. 고유 식별자가 반복되는 횟수입니다.
<?php $units = array();for($i=0;$i<1000000;$i++){ $units[] = uniqid();} $values = array_count_values($units); $duplicates = [];foreach($values as $k=>$v){ if($v>1){ $duplicates[$k]=$v; }} echo '<pre class="brush:php;toolbar:false">';print_r($duplicates); echo '';?>
이 방법은 중복된 고유 식별자를 훨씬 적게 생성합니다.
<?php $units = array();for($i=0;$i<1000000;$i++){ $units[] = uniqid('',true);} $values = array_count_values($units); $duplicates = [];foreach($values as $k=>$v){ if($v>1){ $duplicates[$k]=$v; }} echo '<pre class="brush:php;toolbar:false">';print_r($duplicates); echo '';?>
이 메서드로 생성된 고유 식별자에는 중복이 없습니다.
<?php $units = array();for($i=0;$i<1000000;$i++){ $units[]=md5(uniqid(md5(microtime(true)),true));} $values = array_count_values($units); $duplicates = [];foreach($values as $k=>$v){ if($v>1){ $duplicates[$k]=$v; }} echo '<pre class="brush:php;toolbar:false">';print_r($duplicates); echo '';?>
sessioncreateid() 함수를 사용하여 고유 식별자를 생성해본 결과, sessioncreateid()를 주기적으로 1억 번 호출하더라도 중복이 없습니다. php sessioncreateid()는 세션 ID를 생성하는 데 사용되는 PHP 7.1의 새로운 함수입니다. 하위 버전에서는 사용할 수 없습니다.
더 많은 PHP 관련 지식을 알고 싶다면 PHP 중국어 웹사이트를 방문하세요!
위 내용은 PHP는 고유 ID를 생성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!