phpbar.de logo

Mailinglisten-Archive

AW: [php] [OT] Nummernvergabe

AW: [php] [OT] Nummernvergabe

Thorsten Koch ml at osus.de
Fre Jan 28 14:27:37 CET 2005


Tach,

bei den Zufallszahlen geht es doch darum, dass der Benutzer, der sich
gerade einen Account geholt hat, nicht auf die nächsten Account-Nummern
schließen kann. Wie wäre denn folgendes:

Deine Range geht von 10000 bis 99999. Jetzt fängst du einfach in der
Mitte an, mit 50000, der nächste User bekommt die Mitte zwischen 10000
und 50000, also 25000. Dann gehst Du in die obere Hälfte und der darauf
folgende User bekommt die Mitte zwischen 50000 und 99999, also 75000
(hüstel). Danach nimmst Du die Hälfte vom untersten Viertel, also 12500
und dann die Hälfte vom obersten Viertel, also 87500 und dann vom zweit
untersten Viertel, also 37500 und so weiter und so fort:

1. User: 50000
2. User: 25000
3. User: 75000
4. User: 12500
5. User: 87500
6. User: 37500
7. User: 62500
...

So kannst Du Dir einigermaßen sicher sein, dass Du erstmal nicht
kollidierst, mußt Dir halt merken, in welchem "Schritt" Du gerade bist
und durch einen Algorythmus (äh, wie wird das geschrieben? <g>) die
kommende Zahl bereichnen. Irgendwann kommst du auf ungerade Brüche, dann
mußt Du Dich halt entscheiden, welche der beiden möglichen Werte Du
nimmst.

Ansonsten würde ich Deine erste Methode empfehlen, denn diese Methode
liefert Dir mit EINEM Statement eine Zahl, egal wieviel schon vergeben
wurden bzw. noch frei sind. Solltest aber auch davon abhängig machen,
mit wieviel Benutzern Du überhaupt rechnest. Wenn es 100 von 89999
möglichen sind, dann kannst Du es ruhig mit den anderen beiden Methoden
probieren. Sollten es aber womöglich irgendwann 89999 werden, dann
solltest Du auf jedem Fall auf diese Methoden verzichten, bzw. Dir, bis
es soweit ist, etwas besseres überlegen :)


Mit freundlichen Grüßen aus Stuttgart

Thorsten Koch



php::bar PHP Wiki   -   Listenarchive