uniqid

(PHP 4, PHP 5, PHP 7, PHP 8)

uniqidСгенерировать уникальный ID

Описание

uniqid(string$prefix = "", bool$more_entropy = false): string

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

Предостережение

Функция не создаёт криптографически безопасные значения и не должна использоваться в криптографических целях или целях, которые требуют, чтобы возвращаемые значения были недоступны для разгадывания.

Если нужна криптографически безопасная случайная последовательность, можно использовать класс Random\Randomizer с движком Random\Engine\Secure. Для простых сценариев существуют функции random_int() и random_bytes() с удобным API криптографически безопасного генератора псевдослучайных чисел (CSPRNG), поддерживаемого операционной системой.

Внимание

Эта функция не гарантирует получения уникального значения. Большинство операционных систем синхронизирует время с NTP, либо его аналогами, так что системное время постоянно меняется. Следовательно возможна ситуация, когда эта функция вернёт неуникальный идентификатор для процесса/потока. Для увеличения вероятности получения уникального значения используйте параметр more_entropy.

Список параметров

prefix

Может быть полезно, к примеру, если идентификаторы генерируются одновременно на нескольких хостах и генерация идентификаторов производится в одну и ту же микросекунду.

С пустым параметром prefix, возвращаемая строка будет длиной в 13 символов. Если параметр more_entropy равен true, то строка будет длиной в 23 символа.

more_entropy

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

Возвращаемые значения

Возвращает уникальный идентификатор в виде строки.

Внимание

Эта функция пытается создать уникальный идентификатор, но не даёт 100% гарантии уникальности.

Примеры

Пример #1 Пример использования uniqid()

<?php

printf("uniqid(): %s\r\n", uniqid());


printf("uniqid('php_'): %s\r\n", uniqid('php_'));


printf("uniqid('', true): %s\r\n", uniqid('', true));
?>

Примечания

Замечание:

В Cygwin параметр more_entropy должен быть задан как true для работы этой функции.

Смотрите также

  • random_bytes() - Получает криптографически безопасные случайные байты
To Top