This is a discussion on unique id within the PHP General forums, part of the PHP Programming Forums category; Hi there! What's the best way to create uids (unique ids) even when runnig at exactly same time (microseconds)? ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
Hi,
Saturday, July 26, 2003, 5:58:41 PM, you wrote: j> Hi there! j> What's the best way to create uids (unique ids) even when runnig at j> exactly same time (microseconds)? j> is this enough ??? j> $r = mt_rand(); j> $uid = uniqid(getmypid() . $r); j> thanks j> Jan I use: $id = md5(uniqid(rand(),1)); -- regards, Tom |
|
|||
|
* 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 -- "I used to think I was indecisive, but now I'm not so sure." |
|
|||
|
* 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." |