Maison >développement back-end >tutoriel php >PHP génère un identifiant unique

PHP génère un identifiant unique

angryTom
angryTomavant
2019-10-23 17:22:463336parcourir

Préface

La fonction PHP uniqid() peut être utilisée pour générer un identifiant unique qui n'est pas répété, qui est basé sur l'horodatage actuel en microsecondes. En cas de concurrence élevée ou d'intervalles extrêmement courts (comme le code de boucle), une grande quantité de données en double apparaîtra. Même si le deuxième paramètre est utilisé, il sera répété, et la meilleure solution est de combiner la fonction md5 pour générer un identifiant unique.

Utilisez la fonction

string uniqid ([ string $prefix = "" [, bool $more_entropy = false ]] )

pour obtenir un identifiant unique préfixé basé sur le nombre de microsecondes dans l'heure actuelle. préfixe Paramètres utiles. Par exemple : si sur plusieurs hôtes, un identifiant unique peut être généré dans la même microseconde. Si le préfixe est vide, la longueur de la chaîne renvoyée est 13. Si moreentropy est VRAI, la longueur de la chaîne renvoyée est 23. moreentropy Si défini sur TRUE, uniqid() ajoutera une entropie supplémentaire à la fin de la chaîne renvoyée (en utilisant un générateur congruentiel linéaire combiné). Rendre l'identifiant unique plus unique.

PHP uniqid() génère une première méthode d'identifiant unique non répétitive

Cette méthode générera une grande quantité de données répétées L'exécution du code PHP suivant générera l'identifiant unique et l'élément correspondant. la valeur dans l’index du tableau est le nombre de fois que l’identifiant unique est répété.

<?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 &#39;<pre class="brush:php;toolbar:false">&#39;;print_r($duplicates);
echo &#39;
';?>

PHP uniqid() Méthode 2 pour générer des identifiants uniques uniques

Cette méthode génère beaucoup moins d'identifiants uniques en double.

<?php
$units = array();for($i=0;$i<1000000;$i++){
    $units[] = uniqid(&#39;&#39;,true);}
$values  = array_count_values($units);
$duplicates = [];foreach($values as $k=>$v){    if($v>1){
        $duplicates[$k]=$v;    }}
echo &#39;<pre class="brush:php;toolbar:false">&#39;;print_r($duplicates);
echo &#39;
';?>

PHP uniqid() génère la troisième méthode d'identifiant unique non dupliqué

Il n'y a pas de duplication dans l'identifiant unique généré par cette méthode.

<?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 &#39;<pre class="brush:php;toolbar:false">&#39;;print_r($duplicates);
echo &#39;
';?>

PHP uniqid() génère un identifiant unique, méthode quatre

Utilisez la fonction sessioncreateid() pour générer un identifiant unique Après des tests réels, il a été constaté que même si sessioncreateid() est appelé 100. millions de fois en boucle, il n'y a eu aucune duplication. php sessioncreateid() est une nouvelle fonction de PHP 7.1, utilisée pour générer un identifiant de session. Elle ne peut pas être utilisée dans les versions inférieures.

Pour plus de connaissances sur PHP, veuillez visiter le Site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer