drew

Words on your display.

Archive for the ‘guid’ tag

PHP Time Based UUID Function (GUID)

with one comment

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

Written by Drew

July 28th, 2009 at 3:50 pm

Posted in PHP, Programming, WebDev

Tagged with , , , ,