Создание уникального идентификатора в PHP

Я пытаюсь создать уникальный идентификатор в php, чтобы сохранить загруженный пользователем контент в FS без конфликтов. Я использую php, и на данный момент этот небольшой фрагмент отвечает за создание UID:

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

Этот код является отвратительным: он создает временный файл в FS и удаляет его, сохраняя только соответствующую уникальную часть сгенерированной строки.

Есть ли лучший способ сделать это, наиболее предпочтительно без каких-либо внешних зависимостей?

Большое спасибо!

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

Получает префиксный уникальный идентификатор, основанный на текущем времени в микросекундах.

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

Поскольку и uniqid (), и rand () являются функциями, основанными на текущем времени, rand () добавляет почти никакой энтропии, так как время изменит только малую величину между соответствующими вызовами.

Пока вы используете опцию more_entropy , никогда не должно быть столкновений внутри одного сервера. Если вы используете кластеризацию, обязательно укажите префикс, который отличается между серверами.

uniqid () – это то, что вы ищете в большинстве практических ситуаций.

Вы можете сделать его еще более «uniq», добавив после него большое случайное число.