Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Przechowywanie dużej ilości zdjęć, a wydajność
Forum PHP.pl > Forum > Przedszkole
Ayrox
Co jeśli mam kilkadziesiąt tysięcy zdjęć, na jednego użytkownika ok. 120 zdjęć. Jak je przechowywać? w jednym katalogu raczej szybko się zapcha. Jak zrobić żeby było najwydajniej?
ddiceman
Mozesz postawic tabele w bazie danych, gdzie bedziesz przechowywal ID, ID wlasciciela, oryginalna nazwe i nazwe w systemie plikow. Nazwa w systemie plikow moze byc losowana na podstawie while(file_exists($nazwa)) $nazwa = md5(microtime()); a wszystko trzymane w jednym katalogu.
Ayrox
nie no każdy użytkownik ma zdjęcie na podstawie nicku

np: nick24.jpg to zdjęcie 24. Tylko chodzi mi jak zrobić z katalogami? Wszystkie pliki w jednym katalogu czy jak?
piraciq
Lub też każdemu userowi przydzielić katalog wtedy będziesz miał jako taki porządek
Ayrox
no właśnie każdemu userowi katalog, ale czy to jest takie wydajne?
lucca
Ja bym trzymał wszystko w osobnym katalogu dla każdego usera, a w bazie utworzył tabele:
ID usera
ID zdjęcia
nickame usera
nazwa_zdjęcia
może jeszcze jakieś uniqid
piraciq
Z pewnością to będzie lepsze rozwiązanie niż trzymanie wszystkich zdjęć w jednym katalogu.
phpion
Możesz zrobić również odpowiednie przedziały tj. przykładowo w katalogu photos/1 trzymasz zdjęcia ludków o id od 1 do 50, w photos/2 o id od 51 do 100, photos/3 o id od 101 do 150 itd itd. Wystarczy proste obliczenie matematyczne aby sprawdzić do którego przedziału wpada użytkownik o danym id. Ale to obliczenie wymyśl już sobie sam smile.gif
Ayrox
ale jak już w grę wchodzi np 800 tys userów? 

Ile mniejwięcej na jeden katalog najlepiej żeby przypadało max zdjeć żeby nie zamulało?

Nie mam id w serwisie, jedynie login. Ale można zrobić oczywiście wszystko. Np losowo przydzielić przy rejestracji katalog gdzie zawsze będą zapisywanie moje zdjęcia. Ile najlepiej zdjęć żeby było w katalogu? smile.gif
Kicok
Jakiś czas temu ktoś miał podobne wątpliwości i zrobił test wydajności dla trzech przypadków:
1. Wszystkie pliki w jednym katalogu
2. Pliki rozmieszczone w katalogach względem nazwy, np:
przyklad.jpg => p/r/z/przyklad.jpg
inny.jpg => i/n/n/inny.jpg
3. Baza danych

Nie pamiętam już dokładnie, ale testował chyba 100 000 (albo 1 000 000) plików o rozmiarze ~2kB. Trzymanie wszystkich plików w jednym katalogu okazało się najwydajniejsze, ale różnica między 1. a 2. nie była znacząca. Znajdź sobie ten wątek na forum i poczytaj.
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.