Question

J'essaie de générer un identifiant unique en php afin de stocker le contenu téléchargé par l'utilisateur sur un système de fichiers sans conflit. J'utilise php, et pour le moment, ce petit extrait est responsable de la génération de l'UID:

$id = tempnam (".", "");
unlink($id);
$id = substr($id, 2);

Ce code est hideux: il crée un fichier temporaire et le supprime, en ne conservant que la partie unique pertinente de la chaîne générée.

Existe-t-il un meilleur moyen de le faire, de préférence sans dépendance externe?

Merci beaucoup!

Était-ce utile?

La solution

string uniqid ([ string $prefix [, bool $more_entropy ]] )

Obtient un identifiant unique préfixé basé sur l'heure actuelle en microsecondes.

USAGE: $id = uniqid(rand(), true);

Autres conseils

Etant donné que les fonctions uniqid () et rand () sont basées sur l’heure actuelle, rand () n’ajoute presque pas d’entropie, car l’heure ne change que très peu entre les appels respectifs.

Tant que vous utilisez l'option more_entropy , vous ne devriez jamais avoir de collision au sein d'un seul serveur. Si vous utilisez le clustering, veillez à inclure un préfixe différent selon les serveurs.

uniqid () est ce que vous recherchez dans la plupart des situations pratiques.

Vous pouvez le rendre encore plus " uniq " en ajoutant un grand nombre aléatoire après.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top