PHP uniqid() 関数を使用すると、マイクロ秒単位の現在のタイムスタンプに基づいて、繰り返されない一意の識別子を生成できます。同時実行性が高い場合、または間隔が非常に短い場合 (ループ コードなど)、大量の重複データが表示されます。 2 番目のパラメータを使用した場合でも、それが繰り返されるため、md5 関数を組み合わせて一意の ID を生成することが最善の解決策です。
##説明
##string uniqid ([ string $prefix = "" [, bool $more_entropy = false ]] )現在の時刻のマイクロ秒に基づいて、プレフィックス付きの一意の ID を取得します。
パラメータ
プレフィックス
便利なパラメータ。たとえば、複数のホスト上にある場合、同じマイクロ秒内に一意の ID が生成される可能性があります。
more_entropy
TRUE に設定すると、uniqid() は返された文字列の末尾に追加のエントロピーを追加します (結合線形合同生成器を使用)。固有 ID をより固有なものにします。
PHP uniqid() 重複しない一意の識別子を生成するメソッド 1
このメソッドは大量の重複データを生成します。次の PHP コードを実行すると、配列インデックスが生成されます。は、生成された一意の識別子であり、 に対応します。 の要素値は、一意の識別子が繰り返される回数です。 <?php
$units = array();
for($i=0;$i<1000000;$i++){
$units[] = uniqid();
}
$values = array_count_values($units);
$duplicates = [];
foreach($values as $k=>$v){
if($v>1){
$duplicates[$k]=$v;
}
}
echo '<pre class="brush:php;toolbar:false">';
print_r($duplicates);
echo '
';
?>
PHP uniqid() 重複しない一意の識別子を生成する方法 2
このメソッドによって生成される重複する一意の識別子の量は大幅に削減されます。 <?php
$units = array();
for($i=0;$i<1000000;$i++){
$units[] = uniqid('',true);
}
$values = array_count_values($units);
$duplicates = [];
foreach($values as $k=>$v){
if($v>1){
$duplicates[$k]=$v;
}
}
echo '<pre class="brush:php;toolbar:false">';
print_r($duplicates);
echo '
';
?>
PHP uniqid() 一意の識別子を生成するメソッド 3
このメソッドで生成される一意の識別子には重複はありません。 <?php
$units = array();
for($i=0;$i<1000000;$i++){
$units[]=md5(uniqid(md5(microtime(true)),true));
}
$values = array_count_values($units);
$duplicates = [];
foreach($values as $k=>$v){
if($v>1){
$duplicates[$k]=$v;
}
}
echo '<pre class="brush:php;toolbar:false">';
print_r($duplicates);
echo '
';
?>
PHP uniqid() は一意の識別子メソッド 4 を生成します
session_create_id() 関数を使用して一意の識別子を生成します。実際のテストの結果、session_create_id() を実行してもを周期的に 1 億回呼び出しても、重複はありませんでした。 php session_create_id() は PHP 7.1 の新しい関数です。セッション ID を生成するために使用されます。以前のバージョンでは使用できません。
上記の内容は参考用です。
PHP ビデオ チュートリアル
以上がphp は一意の ID を自動的に生成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。