Pergunta

Eu estou tentando gerar um ID único em php, a fim de conteúdo enviado por usuários loja em um FS sem conflitos. Eu estou usando PHP, e no momento em que este pequeno trecho é responsável por gerar o UID:

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

Este código é horrorosa: ele cria um arquivo temporário no FS e exclui-lo, mantendo apenas a única parte relevante da cadeia gerada

.

Existe alguma maneira melhor de fazer isso, de preferência sem quaisquer dependências externas?

Muito obrigado!

Foi útil?

Solução

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

Obtém um identificador unico prefixado baseado no tempo atual em microssegundos.

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

Outras dicas

Uma vez que tanto uniqid () e rand () são funções com base no tempo atual, rand () não adiciona entropia, desde o tempo vai mudar apenas uma pequena quantidade entre as respectivas chamadas.

Enquanto você usar a opção more_entropy, você nunca deve ter uma colisão dentro de um único servidor. Se você usar clustering, não se esqueça de incluir um prefixo que difere entre os servidores.

uniqid () é o que você está procurando na maioria das situações práticas.

Você pode torná-lo ainda mais "uniq", adicionando um grande número aleatório depois.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top