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