array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.uniqid.php', 1 => 'uniqid', ), 'up' => array ( 0 => 'ref.misc.php', 1 => 'Разные функции', ), 'prev' => array ( 0 => 'function.time-sleep-until.php', 1 => 'time_sleep_until', ), 'next' => array ( 0 => 'function.unpack.php', 1 => 'unpack', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/misc/functions/uniqid.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
uniqid — Сгенерировать уникальный ID
Получает уникальный идентификатор с префиксом, основанный на текущем времени в микросекундах.
Функция не создаёт криптографически безопасные значения и не должна использоваться в криптографических целях или целях, которые требуют, чтобы возвращаемые значения были недоступны для разгадывания.
Если нужна криптографически безопасная случайная последовательность, можно использовать класс 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
/* Уникальный id, например: 4b3403665fea6 */
printf("uniqid(): %s\r\n", uniqid());
/* Префикс к уникальному id можно добавить одним
* из следующих способов:
*
* $uniqid = $prefix . uniqid();
* $uniqid = uniqid($prefix);
*/
printf("uniqid('php_'): %s\r\n", uniqid('php_'));
/* Также можно активировать параметр большей энтропии, который
* требуется на некоторых системах, таких как Cygwin. Таким образом
* функция uniqid() сгенерирует значение: 4b340550242239.64159797
*/
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>
Замечание:
В Cygwin параметр
more_entropy
должен быть задан какtrue
для работы этой функции.