PHP uniqid()

  다른 뜻에 대해서는 함수 uniqid() 문서를 참조하십시오.

1 개요[ | ]

PHP uniqid()
  • 유니크 ID를 생성하는 PHP 함수[1]
  • 기본은 16진수 13자리
앞 8자리는 초단위까지, 뒤 5자리는 마이크로초단위를 16진수로 바꾼 것이다.
  • 2번째 인수로 true를 넣으면 16진수 23자리가 된다.
  • 실상은 마이크로초 단위의 유닉스 타임스탬프( microtime() ) 값을 변형한 것이다.
그렇기 때문에 반복생성해보면 앞부분이 잘 바뀌지 않는다.
  • 매개변수를 넣으면 접두어로 붙는다.
echo uniqid(); # 4b3403665fea6 (예시)
echo uniqid('hello_'); # hello_56fdc64b3ea94 (예시)
echo uniqid()."\n";
echo uniqid()."\n";
echo uniqid()."\n";

2 생성일시 확인[ | ]

function uniqid2datetime($uniqid) {
	return date('Y-m-d H:i:s',hexdec(substr($uniqid,0,8)));
}

echo uniqid2datetime('5ebe03859ec4b') . "\n"; # 2020-05-15 02:50:45
echo uniqid2datetime('5ebe03859fbe2') . "\n"; # 2020-05-15 02:50:45

3 직접 제작[ | ]

  • uniqid()와 동일한 기능을 가지는 uniqid2()를 만들어 보았다.
  • 내장 함수 uniqid()가 있으므로 uniqid2()를 실제로 사용할 일은 없겠지만, 작동원리를 이해할 수 있다.
function uniqid2() {
	list($u, $s) = explode(' ', microtime());
	return dechex($s).substr(dechex(substr($u,2,6)),0,8);
}
echo 'origin: ' . uniqid()  . "\n";
echo 'custom: ' . uniqid2() . "\n";
echo 'origin: ' . uniqid()  . "\n";
echo 'custom: ' . uniqid2() . "\n";

4 같이 보기[ | ]

5 참고[ | ]

  1. 단, 완벽하게(100%) 유일함을 보장하지는 않지만, 실무적으로 중복이 있을 확률은 0%라고 봐도 무방하다.
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}