Re: unique id

From: Date: Mon, 28 Jul 2003 20:01:56 +0000
Subject: Re: unique id
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-157233@lists.php.net to get a copy of this message
* Thus wrote Gabriel Guzman (gabe@careercast.com): > On Sat, 2003-07-26 at 07:11, Curt Zirzow wrote: > > * Thus wrote jan (jan@plazma.sk): > > > Hi there! > > > > > > What's the best way to create uids (unique ids) even when runnig at > > > exactly same time (microseconds)? > > > > > > is this enough ??? > > > > > > $r = mt_rand(); > > > $uid = uniqid(getmypid() . $r); > > > > If you're running a cluster of machines I would include information > > on the machine that is generating the uid. > > > > $uid = uniqid(getmypid() . $r . '_MACHINE_NAME_'); > > > > Curt > > this is similar to what we do as well: > > hexadecimal timestamp + hexadecimal pid + hexadecimal randomvalue + hex > ip address of server (only used if using multiple machines, otherwise > this part is left off). > > I've also considered using semaphores in my id generation function to > insure only one counter can be created at a time, but am worried that > this might cause a bit of a performance hit. Anyone tried this? The only other way I have done it was to make a central database with a table containing a auto incremented id. All scripts would add a record and get back the auto incremented id number. Since db inserts are atomic, it is guaranteed to be unique. I think the biggest weak point in this approach is if the connection goes down between the web server and db server, the script is left clueless as what to do. Curt -- "I used to think I was indecisive, but now I'm not so sure."

« previous php.general (#157233) next »