Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak wygenerować unikalne numery id nie generowane po kolei
Octobus
post 16.11.2012, 09:10:28
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
mmmmmmm
post 16.11.2012, 09:28:07
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 16.11.2012, 09:41:58
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


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
Crozin
post 16.11.2012, 10:17:10
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 16.11.2012, 10:44:42
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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 20:35