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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top