Heim >Backend-Entwicklung >PHP-Tutorial >PHP generiert eine eindeutige ID
Vorwort
Mit der PHP-Funktion uniqid() kann eine eindeutige, nicht wiederholte Kennung generiert werden, die auf dem aktuellen Zeitstempel in Mikrosekunden basiert. Bei hoher Parallelität oder extrem kurzen Intervallen (z. B. Schleifencode) wird eine große Menge doppelter Daten angezeigt. Selbst wenn der zweite Parameter verwendet wird, wird er wiederholt. Die beste Lösung besteht darin, die MD5-Funktion zu kombinieren, um eine eindeutige ID zu generieren.
Verwenden Sie die Funktion
string uniqid ([ string $prefix = "" [, bool $more_entropy = false ]] )
, um eine vorangestellte eindeutige ID basierend auf der Anzahl der Mikrosekunden in der aktuellen Zeit zu erhalten. Präfix Nützlicher Parameter. Beispiel: Wenn auf mehreren Hosts eine eindeutige ID in derselben Mikrosekunde generiert werden könnte. Wenn das Präfix leer ist, beträgt die Länge der zurückgegebenen Zeichenfolge 13. Wenn moreentropy TRUE ist, beträgt die Länge der zurückgegebenen Zeichenfolge 23. moreentropy Wenn auf TRUE gesetzt, fügt uniqid() am Ende der zurückgegebenen Zeichenfolge zusätzliche Entropie hinzu (unter Verwendung eines kombinierten linearen Kongruenzgenerators). Machen Sie die eindeutige ID einzigartiger.
Diese Methode generiert eine große Menge wiederholter Daten. Durch Ausführen des folgenden PHP-Codes werden die eindeutige Kennung und das entsprechende Element generiert Der Wert im Array-Index gibt an, wie oft der eindeutige Bezeichner wiederholt wird.
<?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 '';?>
Diese Methode generiert deutlich weniger doppelte eindeutige Identifikatoren.
<?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 '';?>
Es gibt keine Duplikate in der eindeutigen Kennung, die von dieser Methode generiert wird.
<?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 '';?>
Verwenden Sie die Funktion sessioncreateid(), um eine eindeutige Kennung zu generieren. Nach tatsächlichen Tests wurde festgestellt, dass selbst wenn sessioncreateid() 100 heißt Millionen Mal in einer Schleife hat es keine Duplizierung gegeben. php sessioncreateid() ist eine neue Funktion in PHP 7.1, die zum Generieren einer Sitzungs-ID verwendet wird. Sie kann in niedrigeren Versionen nicht verwendet werden.
Weitere PHP-Kenntnisse finden Sie auf der PHP-Chinese-Website!
Das obige ist der detaillierte Inhalt vonPHP generiert eine eindeutige ID. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!