Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySql] Tysiące fotografi - jak je przechowywać ?
mariuszg
post
Post #1





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 22.06.2006

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


witam

Strona z ogłoszeniami i do każdego ogłoszenia do 10 fotek.
Jak łatwo policzyć będzie tego mnóstwo.

Jak przechowywać te fotki ?

W bazie ścieżki do plików.

A jak przechowywać fotki ?
Wszystkie w jednym katalogu - to chyba nie najlepsze rozwiązanie.
Jak zabrać sie za skrypt który będzie to w sensowny sposób rozmieszczał ?
Nie wiem czy w jednym katalogu po 100 katalogów a w nim po 1000 fotek - czy inne ilości lub rozwiązania.


Proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
-Wieviór-
post
Post #2





Goście







Tworzysz tabelę z obrazkami i z katalogami.

Przy próbie dodania pliku wyczytujesz ostatni katalog (według id) i dajesz skrypt, który sprawdzi ile jest w tym katalogu plików, jeśli jest powiedzmy powyżej 500 to skrypt tworzy nowy, zapisuje go do tabeli z katalogami i tam wrzuca ten obrazek. Nazwy katalogów najlepiej jakby były losowe jakoś.
Go to the top of the page
+Quote Post
mariuszg
post
Post #3





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 22.06.2006

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


dzięki za odpowiedz


Czy 500 plików w katalogu to optymalne rozwiązanie ?

przy 30 000 fotek byłoby 60 katalogów

pozdrawiam
Go to the top of the page
+Quote Post
l0co
post
Post #4





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 18.08.2007
Skąd: Bydgoszcz

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


Jeśli będziesz hostował na Ext3 w Linuxie z jądrem od wersji 2.6 to w sumie nie ma różnicy i możesz wszystko trzymać w jednym katalogu. Na Windzie pewnie się w końcu wysypie, jak wszystko...
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #5





Goście







Tak na prawdę nie ma to znaczenia ile będziesz tych plików gdzie trzymać. Podałem przykładowo 500, myślę że to optymalna liczba ;]
Go to the top of the page
+Quote Post
viraptor
post
Post #6





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 27.03.2006

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


Cytat(l0co @ 11.09.2007, 13:14:08 ) *
Jeśli będziesz hostował na Ext3 w Linuxie z jądrem od wersji 2.6 to w sumie nie ma różnicy

Około 5-8k plików w kat. zacznie zwalniać bez indeksowania.
Na pewno w bazie ścieżki do oryginałów obrazków. A jak dzielić?
Ustawić jakiś max i dzielić last_insert_id z tablicy ścieżek przez max - wynik to nazwa katalogu - ładnie się rozłoży i rozwiązanie proste. Albo inne rozwiązanie - ale tu nie ma co kombinować (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Na Windzie pewnie się w końcu wysypie, jak wszystko...

Chyba na FAT (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Na NTFS-ie z powodzeniem trzymam ponad 15k plików w jednym katalogów i żadnych problemów nie ma. Choć będzie to pewna różnica w przypadku wielkości plików, bo trzeba przecież wziąć pod uwagę przechowywanie w MFT.

To tak było a'propos windy.

Cytat
Ustawić jakiś max i dzielić last_insert_id z tablicy ścieżek przez max - wynik to nazwa katalogu

No, do głowy od razu przychodzi mi rozwiązanie, typu: IDOgłoszenia_numerFotki - 1_12.jpg.

Nawet nie trzeba by było w bazie ścieżek trzymać; skoro to fotki, to w 95% przypadków wystarczyłby JPG.

Ten post edytował erix 12.09.2007, 08:09:31
Go to the top of the page
+Quote Post
templar
post
Post #8





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 13.09.2006
Skąd: Poland

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


Najlepiej przy uploadowaniu fotografii użyć funkcji md_file().

Generuje ona hash md5 z zawartości pliku. Teraz możesz uploadować plik do danego katalogu, nadajesz mu nazwę wygenerowanego_hashu_md5.jpg/gif/itp i następnie zapisujesz do bazy hash danego zdjęcia przy danym rekordzie.

Pozdrawiam.
Go to the top of the page
+Quote Post
mariuszg
post
Post #9





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 22.06.2006

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


skoro nie jest to istotne - to jak dla mnie to wszystkie w jednym katalogu



Cytat(erix @ 12.09.2007, 09:09:11 ) *
Chyba na FAT (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Na NTFS-ie z powodzeniem trzymam ponad 15k plików w jednym katalogów i żadnych problemów nie ma. Choć będzie to pewna różnica w przypadku wielkości plików, bo trzeba przecież wziąć pod uwagę przechowywanie w MFT.

To tak było a'propos windy.
No, do głowy od razu przychodzi mi rozwiązanie, typu: IDOgłoszenia_numerFotki - 1_12.jpg.

Nawet nie trzeba by było w bazie ścieżek trzymać; skoro to fotki, to w 95% przypadków wystarczyłby JPG.



15k nie kumam tego, (w katalogu z fotkami 15k jedna fotka ma 60 KB )
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
15k nie kumam tego,

Skrót myślowy: 15 000; było bez -B, więc chodziło mi o ilość.
Go to the top of the page
+Quote Post
mariuszg
post
Post #11





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 22.06.2006

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


A co powiecie o tym kodzie ?

fotki będą w folderach 1,2,3,itd

jak w folderze jest więcej niż 5(przykład do testów) to tworzy nowy folder, a jak w którymś jest mniej to w nim zapisuje

w $ile_katalogow_max zrobiłem 10 dla testów a myślę o 1000 - powinno wystarczyć tym bardziej że stare fotki będą na bieżąco usuwane.

Tylko nie wiem czy aby to nie zamuli jak będzie 500 folderów po np 15000 fotek

Kod wystarczy skopiować i wkleić działa.

  1. <?
  2. $katalog = 1;
  3. $ile_plikow_max = 5;
  4. $ile_katalogow_max = 10;
  5.  
  6. while ($test < $ile_katalogow_max ) {
  7. $i = 0;
  8. if (is_dir('./'.$katalog)) {
  9.  echo "katalog $katalog istnieje";
  10. $sciezka2 = $katalog;
  11. $katalog2 = opendir($sciezka2);
  12. while ($plik = readdir($katalog2)) {
  13. if (eregi(".$",$plik)) {
  14.  $ile = $i;
  15. $i++;
  16. }
  17. }
  18.  closedir($katalog2);
  19.  echo " - jest w nim: $i plikow ";
  20.  
  21. if ($ile < $ile_plikow_max){
  22. $zapis_w = $sciezka2;
  23. $test = $ile_katalogow_max;
  24.  }  
  25. }
  26.  else {
  27. echo "brak katalogu $katalog";
  28.  
  29. mkdir($katalog);
  30. $zapis_w =$katalog;
  31. $test = $ile_katalogow_max;
  32. }
  33. echo "<br>";
  34. $katalog ++;  
  35. $test ++;
  36. }
  37. echo "<br> zapis do pliku "; 
  38. echo $zapis_w;
  39. ?>
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:14