* Thus wrote Gabriel Guzman ([EMAIL PROTECTED]): > On Sat, 2003-07-26 at 07:11, Curt Zirzow wrote: > > * Thus wrote jan ([EMAIL PROTECTED]): > > > 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." -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php