Generando una ID única en PHP
-
05-07-2019 - |
Pregunta
Estoy tratando de generar una ID única en php para almacenar contenido subido por el usuario en un FS sin conflictos. Estoy usando php, y en este momento este pequeño fragmento es responsable de generar el UID:
$id = tempnam (".", "");
unlink($id);
$id = substr($id, 2);
Este código es horrible: crea un archivo temporal en el FS y lo elimina, conservando solo la parte relevante relevante de la cadena generada.
¿Hay alguna forma mejor de hacerlo, más preferiblemente sin dependencias externas?
¡Muchas gracias!
Solución
string uniqid ([ string $prefix [, bool $more_entropy ]] )
Obtiene un identificador único prefijado basado en la hora actual en microsegundos.
USAGE: $id = uniqid(rand(), true);
Otros consejos
Dado que tanto uniqid () como rand () son funciones basadas en la hora actual, rand () casi no agrega entropía, ya que la hora cambiará solo una pequeña cantidad entre las llamadas respectivas.
Mientras use la opción more_entropy
, nunca debe tener una colisión dentro de un solo servidor. Si utiliza la agrupación en clústeres, asegúrese de incluir un prefijo que difiera entre servidores.
uniqid () es lo que estás buscando en la mayoría de las situaciones prácticas.
Puedes hacerlo aún más " uniq " agregando un gran número aleatorio después de él.