Files
php-doc-ru/reference/misc/functions/uniqid.xml
Sergey Panteleev daef8df962 Обнуление тега Reviewed (#364)
[skip-lint]
[skip-spellcheck]
2021-11-16 13:03:53 +03:00

144 lines
5.4 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: b8758b0605e80c4e3610137b7502a6abeea5c69b Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.uniqid" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>uniqid</refname>
<refpurpose>Сгенерировать уникальный ID</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>uniqid</methodname>
<methodparam choice="opt"><type>string</type><parameter>prefix</parameter><initializer>""</initializer></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>more_entropy</parameter><initializer>&false;</initializer></methodparam>
</methodsynopsis>
<para>
Получает уникальный идентификатор с префиксом, основанный на текущем
времени в микросекундах.
</para>
&caution.cryptographically-insecure;
<warning>
<para>
Эта функция не гарантирует получения уникального значения. Большинство
операционных систем синхронизирует время с NTP, либо его аналогами,
так что системное время постоянно меняется. Следовательно возможна
ситуация, когда эта функция вернёт неуникальный идентификатор для
процесса/потока. Для увеличения вероятности получения уникального
значения используйте параметр <parameter>more_entropy</parameter>.
</para>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>prefix</parameter></term>
<listitem>
<para>
Может быть полезно, к примеру, если идентификаторы генерируются
одновременно на нескольких хостах и генерация идентификаторов производится
в одну и ту же микросекунду.
</para>
<para>
С пустым параметром <parameter>prefix</parameter>, возвращаемая строка
будет длиной в 13 символов. Если параметр <parameter>more_entropy</parameter>
равен &true;, то строка будет длиной в 23 символа.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>more_entropy</parameter></term>
<listitem>
<para>
Если равен &true;, то функция <function>uniqid</function> добавит
дополнительную энтропию (используя комбинированный линейный конгруэнтный
генератор) в конце возвращаемого значения, что увеличивает вероятность
уникальности результата.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает уникальный идентификатор в виде строки.
</para>
<warning>
<para>
Эта функция пытается создать уникальный идентификатор,
но не даёт 100% гарантии уникальности.
</para>
</warning>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>uniqid</function></title>
<programlisting role="php">
<![CDATA[
<?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));
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
В Cygwin параметр <parameter>more_entropy</parameter> должен быть задан
как &true; для работы этой функции.
</para>
</note>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->