(PHP 4, PHP 5, PHP 7)
uniqid — 一意な ID を生成する
$prefix
= ""
[, bool $more_entropy
= false
]] ) : stringマイクロ秒単位の現在時刻にもとづいた、接頭辞つきの一意な ID を取得します。
この関数が生成する値は、暗号学的に安全ではありません。そのため、これを暗号として使ってはいけません。暗号学的に安全な値が必要な場合は、random_int() か random_bytes() あるいは openssl_random_pseudo_bytes() を使いましょう。
This function does not guarantee uniqueness of return
value. Since most systems adjust system clock by NTP or like,
system time is changed constantly. Therefore, it is possible that
this function does not return unique ID for the
process/thread. Use more_entropy
to
increase likelihood of uniqueness.
prefix
これが有用なのは、たとえば複数ホストで同時に ID を生成するような場合です。このような場合、同じマイクロ秒で同じ ID が生成されてしまう可能性があります。
空の prefix
を指定すると、
返される文字列は 13 文字となります。
more_entropy
が TRUE
の場合は
23 文字となります。
more_entropy
TRUE
にすると、uniqid() は
返り値の最後にさらに別のエントロピーを
(線形合同法を使用して) 追加します。これにより、結果が一意になる可能性を高めます。
タイムスタンプにもとづいた一意な識別子を文字列で返します。
This function tries to create 一意な識別子, but it does not guarantee 100% uniqueness of return value.
例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_'));
/* more_entropy パラメータも使えます。Cygwin などのシステムで
* 必要となるでしょう。これは、uniqid() が生成する値をたとえば
* 4b340550242239.64159797 のような形式にします。
*/
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>
注意:
Cygwin でこの関数を動作させるには、
more_entropy
をTRUE
にする必要があります。