Создание уникального идентификатора в PHP
Я пытаюсь создать уникальный идентификатор в php, чтобы хранить загруженный пользователем контент на FS без конфликтов. Я использую php, и на данный момент этот маленький фрагмент отвечает за создание UID:
$id = tempnam (".", "");
unlink($id);
$id = substr($id, 2);
этот код отвратителен: он создает временный файл на FS и удаляет его, сохраняя только соответствующую уникальную часть сгенерированной строки.
есть ли лучший способ сделать это, наиболее предпочтительно без каких-либо внешних зависимости?
спасибо!
3 ответов
string uniqid ([ string $prefix [, bool $more_entropy ]] )
получает уникальный идентификатор с префиксом на основе текущего времени в микросекундах.
USAGE: $id = uniqid(rand(), true);
поскольку оба uniqid () и rand () являются функциями, основанными на текущем времени, rand () не добавляет почти никакой энтропии, так как время будет меняться только небольшое количество между соответствующими вызовами.
пока вы используете more_entropy
опция, вы никогда не должны иметь столкновения внутри одного сервера. Если вы используете кластеризацию, обязательно включите префикс, который отличается между серверами.
uniqid() является то, что вы ищете в большинстве практических ситуаций.
вы можете сделать его еще более "uniq", добавив большое случайное число после него.