Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wygenerowanie unikalnych hashy
DNMX
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 0
Dołączył: 18.09.2021

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


Hej. Mam bazę ok. 2mln rekordów. Każdemu chcę nadać indywidualny, losowy hash skłądający się z 5-ciu cyfr lub małych i dużych znaków. Stworzyłem coś takiego:
  1. ?php
  2. function generateRandomhash($length = 5) {
  3. $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  4. $charactersLength = strlen($characters);
  5. $randomString = '';
  6. for ($i = 0; $i < $length; $i++) {
  7. $randomString .= $characters[rand(0, $charactersLength - 1)];
  8. }
  9. return $randomString;
  10. }
  11.  
  12. $mysqli = new mysqli("localhost","test","test","test");
  13.  
  14.  
  15. $db_name="test";
  16. $q = "SELECT * FROM `$db_name` WHERE hash IS NULL LIMIT 1000;";
  17. $res = $mysqli -> query($q);
  18. while($i = mysqli_fetch_array($res,MYSQLI_ASSOC)) {
  19. $hash = generateRandomhash();
  20. $cq = "SELECT * FROM `$db_name` WHERE hash='$hash'";
  21. $resc = $mysqli -> query($cq);
  22. if (mysqli_num_rows($resc) == 0 ) {
  23. $uq = "UPDATE `$db_name` SET hash='$hash' WHERE id='$i[id]'";
  24. $mysqli -> query($uq);
  25. } else {
  26. echo "Zostawiam $i[name] do ponownego losowania";
  27. }
  28.  
  29. }
  30. ?>

Z początku działa szybko (wiadomo, nie ma jeszcze tyle hashy co się powtarzają) ale pod koniec wolniej. Na obecnej maszynie oszacowałem czas wykonywania się tego kody na 50-100 godzin. Jak mogę to zoptywalizować?
Go to the top of the page
+Quote Post

Posty w temacie


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: 23.08.2025 - 21:27