PHP Time Based UUID Function (GUID)
In my desire to find the “right” UUID function to use in my application, I grew to like the MySQL UUID() results produced because they are partially time based. But I didn’t like that I have to make a database call every time I want a new UUID. I didn’t find any similar functionality in PHP or from user based PHP functions, so here’s my efforts.
It clocks in at 100,000 results in about 1.36 seconds on my 2.8Ghz Intel iMac.
function uuid()
{
// Time based PHP Unique ID
$uid = uniqid(NULL, TRUE);
// Random SHA1 hash
$rawid = strtoupper(sha1(uniqid(rand(), true)));
// Produce the results
$result = substr($uid, 6, 8);
$result .= substr($uid, 0, 4);
$result .= substr(sha1(substr($uid, 3, 3)), 0, 4);
$result .= substr(sha1(substr(time(), 3, 4)), 0, 4);
$result .= strtolower(substr($rawid, 10, 12));
// Return the result
return $result;
}
We produce results looking like this:
1f8fec61-4a6f-9bd5-7f8e-e12325c464c3
1f8fed49-4a6f-9bd5-7f8e-d665dedc0297
1f8fee17-4a6f-9bd5-7f8e-29d1ce3e9e30
1f8feef2-4a6f-9bd5-7f8e-8ce03bebdbdf
1f8fefc7-4a6f-9bd5-7f8e-c22fbedb5390