문제

충돌이없는 FS에 사용자를 지원하는 컨텐츠를 저장하기 위해 PHP에서 고유 ID를 생성하려고합니다. 나는 PHP를 사용하고 있으며 현재이 작은 스 니펫은 UID를 생성하는 책임이 있습니다.

$id = tempnam (".", "");
unlink($id);
$id = substr($id, 2);

이 코드는 끔찍합니다. FS에 임시 파일을 생성하고 생성 된 문자열의 관련 고유 한 부분 만 유지하여 삭제합니다.

외부 종속성이없는 더 좋은 방법이 있습니까?

고맙습니다!

도움이 되었습니까?

해결책

string uniqid ([ string $prefix [, bool $more_entropy ]] )

마이크로 초의 현재 시간을 기준으로 접두사 고유 식별자를 가져옵니다.

USAGE: $id = uniqid(rand(), true);

다른 팁

Uniqid () 및 rand ()는 현재 시간을 기준으로 함수이므로 Rand ()는 엔트로피가 거의 추가되지 않으므로 시간은 각 호출 사이에 적은 양만 변경되므로 엔트로피가 거의 추가되지 않습니다.

당신이 사용하는 한 more_entropy 옵션, 단일 서버 내에서 충돌이 없어야합니다. 클러스터링을 사용하는 경우 서버간에 다른 접두사를 포함해야합니다.

Uniqid ()는 대부분의 실제 상황에서 찾고있는 것입니다.

이후에 큰 무작위 숫자를 추가하여 더 많은 "uniq"로 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top