Gerando uma identificação única em PHP
-
05-07-2019 - |
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!
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.