Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Przechowywanie dużej ilości zdjęć, a wydajność
Ayrox
post
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 23.06.2008

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
ddiceman
post
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.
Go to the top of the page
+Quote Post
Ayrox
post
Post #3





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 23.06.2008

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
piraciq
post
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
Go to the top of the page
+Quote Post
Ayrox
post
Post #5





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 23.06.2008

Ostrzeżenie: (10%)
X----


no właśnie każdemu userowi katalog, ale czy to jest takie wydajne?
Go to the top of the page
+Quote Post
lucca
post
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
Go to the top of the page
+Quote Post
piraciq
post
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.
Go to the top of the page
+Quote Post
phpion
post
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 smile.gif

Ten post edytował phpion 29.07.2008, 14:32:13
Go to the top of the page
+Quote Post
Ayrox
post
Post #9





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 23.06.2008

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
Kicok
post
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."
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 04:08