Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak wygenerować unikalne numery id nie generowane po kolei
Octobus
post
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


crc32(id), md5(id), połączenie obu, UUID()...
Go to the top of the page
+Quote Post
gothye
post
Post #3





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


fajna jest też funkcja hash_hmac ,ja generuje za pomocą niej klucze 128 znaków
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Crozin 16.11.2012, 10:19:58
Go to the top of the page
+Quote Post
Sephirus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zawsze można podejść do tematu jeszcze inaczej...

Kodowanie numerycznego id
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:23