![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 154 Pomógł: 0 Dołączył: 23.06.2008 Ostrzeżenie: (10%) ![]() ![]() |
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?
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 326 Pomógł: 121 Dołączył: 23.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 154 Pomógł: 0 Dołączył: 23.06.2008 Ostrzeżenie: (10%) ![]() ![]() |
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? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 4 Dołączył: 27.07.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Lub też każdemu userowi przydzielić katalog wtedy będziesz miał jako taki porządek
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 154 Pomógł: 0 Dołączył: 23.06.2008 Ostrzeżenie: (10%) ![]() ![]() |
no właśnie każdemu userowi katalog, ale czy to jest takie wydajne?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 7.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 4 Dołączył: 27.07.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Z pewnością to będzie lepsze rozwiązanie niż trzymanie wszystkich zdjęć w jednym katalogu.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
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
![]() Ten post edytował phpion 29.07.2008, 14:32:13 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 154 Pomógł: 0 Dołączył: 23.06.2008 Ostrzeżenie: (10%) ![]() ![]() |
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? ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
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. -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 04:08 |