生成唯一ID的应用场景非常普遍,如临时缓存文件名称,临时变量,临时安全码等,uniqid()函数基于以微秒计的当前时间,生成一个唯一的 ID。由于生成唯一ID与微秒时间关联,因此ID的唯一性非常可靠。
1、md5(time() . mt_rand(1,1000000));
这种方式存在一定概率重复,虽然很小。
2、php内置函数uniqid()
uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。由于基于系统时间,通过该函数生成的 ID 不是最佳的。
3、com_create_guid以及自身算法
function guid( $opt = true ){
if( function_exists('com_create_guid') ){
if( $opt ){ return com_create_guid(); }
else { return trim( com_create_guid(), '{}' ); }
}
else {
mt_srand( (double)microtime() * 10000 ); // optional for php 4.2.0 and up.
$charid = strtoupper( md5(uniqid(rand(), true)) );
$hyphen = chr( 45 ); // "-"
$left_curly = $opt ? chr(123) : ""; // "{"
$right_curly = $opt ? chr(125) : ""; // "}"
$uuid = $left_curly
. substr( $charid, 0, 8 ) . $hyphen
. substr( $charid, 8, 4 ) . $hyphen
. substr( $charid, 12, 4 ) . $hyphen
. substr( $charid, 16, 4 ) . $hyphen
. substr( $charid, 20, 12 )
. $right_curly;
return $uuid;
}
}