(PHP 4, PHP 5, PHP 7, PHP 8)
uniqid — 生成一個(gè)唯一ID
$prefix
= "", bool $more_entropy
= false): string獲取一個(gè)帶前綴、基于當(dāng)前時(shí)間微秒數(shù)的唯一ID。
本函數(shù)并不會(huì)生成安全加密的值,不應(yīng)用于加密用途。若需要安全加密的值,考慮使用 random_int()、random_bytes() 或 openssl_random_pseudo_bytes() 替代。
此函數(shù)不保證返回值的唯一性。
由于絕大多數(shù)系統(tǒng)使用 NTP 或者類似服務(wù)調(diào)整系統(tǒng)的時(shí)間,所以系統(tǒng)時(shí)間經(jīng)常發(fā)生變化。
此外,進(jìn)程/線程可能不會(huì)返回唯一的 ID。
用 more_entropy
來增加唯一性的概率。
prefix
有用的參數(shù)。例如:如果在多臺(tái)主機(jī)上可能在同一微秒生成唯一ID。
prefix
為空,則返回的字符串長(zhǎng)度為13。more_entropy
為
true
,則返回的字符串長(zhǎng)度為23。
more_entropy
如果設(shè)置為 true
,uniqid() 會(huì)在返回的字符串結(jié)尾增加額外的熵(使用combined linear congruential generator)。
使得唯一ID更具唯一性。
返回字符串形式的唯一ID。
此函數(shù)努力創(chuàng)建唯一識(shí)別符,但它不保證返回值得唯一性。
示例 #1 uniqid() 例子
<?php
/* A uniqid, like: 4b3403665fea6 */
printf("uniqid(): %s\r\n", uniqid());
/* We can also prefix the uniqid, this the same as
* doing:
*
* $uniqid = $prefix . uniqid();
* $uniqid = uniqid($prefix);
*/
printf("uniqid('php_'): %s\r\n", uniqid('php_'));
/* We can also activate the more_entropy parameter, which is
* required on some systems, like Cygwin. This makes uniqid()
* produce a value like: 4b340550242239.64159797
*/
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>
注意:
在Cygwin環(huán)境下,為了使此函數(shù)能夠工作,
more_entropy
必須設(shè)置為true
。