uniqid

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

uniqid生成一個(gè)唯一ID

說明

uniqid(string $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 來增加唯一性的概率。

參數(shù)

prefix

有用的參數(shù)。例如:如果在多臺(tái)主機(jī)上可能在同一微秒生成唯一ID。

prefix為空,則返回的字符串長(zhǎng)度為13。more_entropytrue,則返回的字符串長(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。