I have yet to come across a duplicate when using the MySQL equivalent to UUID()
/**
* uuid
*
* uuid() simply replicates MySQL's UUID function, which returns a 36
* character "random" hash (32 alphanumeric, 4 dashes).
* @return string
*/
function uuid(){
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff),
mt_rand(0, 0x0fff) | 0x4000,
mt_rand(0, 0x3fff) | 0x8000,
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff));
}
Laserlight and I have discussed this before and there is always a chance of getting a duplicate ... but using UUID(), there are more combinations than known stars in the universe.