phpbar.de logo

Mailinglisten-Archive

AW: [php] uniqid

AW: [php] uniqid

Andreas M�ller php_(at)_phpcenter.de
Thu, 28 Mar 2002 15:04:38 +0100


Hallo Andreas,

> Ab wann mu� ich damit rechnen, da� IDs doppelt vergeben werden und wie
> kann ich das verhindern?
>
> $id  = md5(uniqid("lastdackel"))

Ab wann kann man schwer sagen. Ein MD5 Hash ist nunmal blos ein Hash und
vondaher nicht eineindeutig. MD5 streut zwar extrem gut im Wertebereich aber
trotzdem kann es vorkommen das man den selben Hash-Wert bekommt. Ist mit
bisher nur ein einziges mal passiert aber kann immer passieren. D.h. wenn du
100%ig sicher gehen willst dann pr�fe die vergebenen ID's. Als ID in einer
DB die ich f�r l�nger brauche und immer wieder dar�ber referenzieren will
w�rde ich mich nicht darauf verlassen das es so schnell keine doppelten
Elemente gibt.
Was glaube ich nachgewiesen ist das MD5(int32) eineindeutig ist, d.h. darauf
kannst du dich recht gut verlassen.

Aber da gibt es noch ein oft vernachl�ssigtes Problem: Server mit mehreren
Prozessoren verarbeiten tats�chlich mehrere Prozesse parallel. So kann es
vorkommen, dass auf zwei Prozessen die selbe ID erzeugt wird. Also auch
darauf lohnt sich ein Blick.

Gru�,
Andreas

PS: Man kann es mit Sicherheit und Zuverl�ssigkeit �bertreiben. Aber im
professionellem Umfeld w�rde ich mir �berlegen ob ich lieber 2 Zeile Code
mehr schreibe. Kurzsichtige Programmierer gab es und gibt es genug. Siehe
Y2K :-)


php::bar PHP Wiki   -   Listenarchive