PHP uniqid 高並發生成不重複唯一ID

2021-09-07 08:31:50 字數 1395 閱讀 8820

php uniqid()函式可用於生成不重複的唯一識別符號,該函式基於微秒級當前時間戳。在高併發或者間隔時長極短(如迴圈**)的情況下,會出現大量重複資料。即使使用了第二個引數,也會重複,最好的方案是結合md5函式來生成唯一id。

php uniqid() 生成不重複唯一標識方法一

這種方法會產生大量的重複資料,執行如下php**會陣列索引是產生的唯一標識,對應的元素值是該唯一標識重複的次數。

<?php

$units = array();

for($i=0;$i<1000000;$i++)

$values  = array_count_values($units);

$duplicates = ;

foreach($values as $k=>$v)

}echo '

';

print_r($duplicates);

echo '

';

?>

複製**

php uniqid() 生成不重複唯一標識方法二

這種方法生成的唯一標識重複量明顯減少。

<?php

$units = array();

for($i=0;$i<1000000;$i++)

$values  = array_count_values($units);

$duplicates = ;

foreach($values as $k=>$v)

}echo '

';

print_r($duplicates);

echo '

';

?>

複製**

php uniqid() 生成不重複唯一標識方法三

這種方法生成的唯一標識中沒有重複。

<?php

$units = array();

for($i=0;$i<1000000;$i++)

$values  = array_count_values($units);

$duplicates = ;

foreach($values as $k=>$v)

}echo '

';

print_r($duplicates);

echo '

';

?>

複製**

php uniqid() 生成不重複唯一標識方法四

使用session_create_id()函式生成唯一識別符號,經過實際測試發現,即使迴圈呼叫session_create_id()一億次,都沒有出現過重複。

php session_create_id()是php 7.1新增的函式,用來生成session id,低版本無法使用。

PHP uniqid 高並發生成不重複唯一ID

php uniqid 函式可用於生成不重複的唯一識別符號,該函式基於微秒級當前時間戳。在高併發或者間隔時長極短 如迴圈 的情況下,會出現大量重複資料。即使使用了第二個引數,也會重複,最好的方案是結合md5函式來生成唯一id。php uniqid 生成不重複唯一標識方法一 這種方法會產生大量的重複資料...

高並發生成唯一訂單號

最近開發一套會員系統,涉及到訂單號生成,在高並發條前提下,如何生成唯一的訂單號值得斟酌,我這裡提供一種較為可行的方案 public static string getorderidbyuuid 0 代表前面補充0 4 代表長度為4 d 代表引數為正數型 return time string.form...

PHP高並發生成不重複唯一標識

假設唯一標識為使用者id,當有3個使用者同時註冊,生成使用者id的時間完全相同,如何保證id的唯一性 們給出的方案很多,其中比較流行的方案如下所示 md5 uniqid md5 microtime true true microtime true 返回unix紀元以來的當前時間,精確到最接近的微秒 ...