PHP Conference Nagoya 2025

uniqid

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

uniqidGenerate a time-based identifier

Descrizione

uniqid(string $prefix = "", bool $more_entropy = false): string

Gets an identifier based on the current time with microsecond precision, prefixed with the given prefix and optionally appending a randomly generated value.

Attenzione

Questa funzione non genera valori crittograficamente sicuri, e non dovrebbe essere usata per scopi di crittografia. Se c'è necessità di utilizzare un valore crittograficamente sicuro, si preferisca openssl_random_pseudo_bytes().

Avviso

This function does not guarantee the uniqueness of the return value because the value is based on the current time in microseconds or the current time with a small amount of random data appended if more_entropy is true.

Elenco dei parametri

prefix

Can be useful, for instance, if you generate identifiers simultaneously on several hosts that could generate the same identifier at the same microsecond. (This can happen even on a single host if the system clock is moved backwards, such as by an NTP adjustment.)

With an empty prefix, the returned string will be 13 characters long. If more_entropy is true, it will be 23 characters.

more_entropy

If set to true, uniqid() will add additional entropy (using the combined linear congruential generator) at the end of the return value, which increases the likelihood that the result will be unique.

Valori restituiti

Returns timestamp based identifier as a string.

Avviso

This function does not guarantee the uniqueness of the return value.

Esempi

Example #1 uniqid() Example

<?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));
?>

Note

Nota:

Under Cygwin, the more_entropy must be set to true for this function to work.

Vedere anche:

add a note

User Contributed Notes 1 note

up
2
ken at smallboxsoftware
17 years ago
Just to note this function is fairly slow, and can bring your script to a crawl if it is in a loop. Strangely if you run it as uniqid('', true) it runs much more quickly
To Top