![]() Mailinglisten-Archive |
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