Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak wygenerować unikalne numery id nie generowane po kolei
Forum PHP.pl > Forum > Przedszkole
Octobus
Witam,

Mam pewien serwis w ktorym chcialbym ukryc ilosc zlecen ktore w nim beda, teraz mam to na auto_increment i wszyscy wiedza ile ich jest i moga po kolei je sobie odczytywac. Mam zatem 2 pomysly,
1) wygenerowac powiedzmy milion id i przy kazdym insert pobierac po jednym, jak zabraknie to zwiekszam dlugosc lancucha o 1 i znow generuje wszystkie kombinacje
2) przy kazdym insercie losowac id i sprawdzac czy juz go nie ma, ale boje sie ze przy np 12 razach gdzie id bedzie sie powtarzalo skrypt przekroczy maksymalny czas wykonywania

Zastanwaiam sie jak to robia duze portale gdzie identyfikatory sa losowe a maja parenascie milionow rekorodow.
mmmmmmm
crc32(id), md5(id), połączenie obu, UUID()...
gothye
fajna jest też funkcja hash_hmac ,ja generuje za pomocą niej klucze 128 znaków
Crozin
Cytat
2) przy kazdym insercie losowac id i sprawdzac czy juz go nie ma, ale boje sie ze przy np 12 razach gdzie id bedzie sie powtarzalo skrypt przekroczy maksymalny czas wykonywania
Musiałbyś mieć albo maksymalny czas wykonywania ustawiony na ułamek sekundy albo naprawdę postarać się skopać skrypt, by 12 razy
  1. SELECT COUNT(*) FROM tbl_name WHERE id = :id;
miało powodować problemy.

Zresztą, jeżeli identyfikatorom nadasz stałą długość, powiedzmy 12 znaków a-zA-Z0-9 masz 839299365868340224 możliwych kombinacji. Musiałbyś mieć nieziemskiego pecha by dojść do 12 zajętych identyfikatorów.

EDIT: Przepraszam, 3226266762397899821056 kombinacji - wcześniej podałem dla 10 znaków.
Sephirus
Zawsze można podejść do tematu jeszcze inaczej...

Kodowanie numerycznego id
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.