使用PHP uniqid函数生成唯一ID

来源:www.jb51.net 更新时间:2023-05-25 21:55

1. md5(time() . mt_rand(1,1000000));

这种方法有一定的概率会出现重复

2、php内置函数uniqid()

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.
w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数"。

<?php 
echo uniqid(); 
echo uniqid(); 
echo uniqid(); 
?>
输出:
4bfd0e375396b
4bfd0e3753981
4bfd0e3753983

3、结合md5()函数生成一个唯一ID

<?php 
echo md5(uniqid()); 
?>
输出:dfbc5c8c6438de075da28b3c8a413fd0

4、手动去处理,官方给予的案例。

public function create_guid($namespace = '') {  
  static $guid = '';
  $uid = uniqid("", true);
  $data = $namespace;
  $data .= $_SERVER['REQUEST_TIME'];
  $data .= $_SERVER['HTTP_USER_AGENT'];
  $data .= $_SERVER['LOCAL_ADDR'];
  $data .= $_SERVER['LOCAL_PORT'];
  $data .= $_SERVER['REMOTE_ADDR'];
  $data .= $_SERVER['REMOTE_PORT'];
  $hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));
  $guid = '{' . 
      substr($hash, 0, 8) .
      '-' .
      substr($hash, 8, 4) .
      '-' .
      substr($hash, 12, 4) .
      '-' .
      substr($hash, 16, 4) .
      '-' .
      substr($hash, 20, 12) .
      '}';
  return $guid;
 }
 返回结果类似:E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7