Ayrox
29.07.2008, 13:34:56
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
29.07.2008, 13:49:30
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
29.07.2008, 13:59:14
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
29.07.2008, 13:59:56
Lub też każdemu userowi przydzielić katalog wtedy będziesz miał jako taki porządek
Ayrox
29.07.2008, 14:07:48
no właśnie każdemu userowi katalog, ale czy to jest takie wydajne?
lucca
29.07.2008, 14:10:05
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
29.07.2008, 14:26:34
Z pewnością to będzie lepsze rozwiązanie niż trzymanie wszystkich zdjęć w jednym katalogu.
phpion
29.07.2008, 14:31:49
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
Ayrox
29.07.2008, 16:05:45
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?
Kicok
29.07.2008, 19:03:10
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.