Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Lista plików do pobrania - w folderach czy w mysql
Forum PHP.pl > Forum > PHP
adiadi
Posiadam na stronie kilka tysięcy podstron. Większość z tych podstron będzie mieć załączony plik lub kilka plików. Jakie rozwiązanie jest bardziej optymalne.

1. Tworzę katalog "pliki/$id_strony/" i wrzucam do tego katalogu załączniki do danej podstrony. Po wejściu na podstronę, sprawdzam czy istnieje katalog o takim samym id jak strona i jeśli tak, to listuję pliki z tego katalogu i tworzę odpowiednie linki do tych plików
2. Wrzucam pliki do katalogu z datą (np. "pliki/2019-06/") i ścieżkę do pliki zapisuję w mysql. Po wejściu na podstronę wyświetlam linki z mysql.

Wygodniej byłoby mi skorzystać z pierwszej metody. Zastanawiam się jednak, czy duża ilość podfolderów w przypadku pierwszej metody będzie miała znaczący wpływ na wydajność?
sazian
Skoro strony mają oddzielne pliki to dobrym pomysłem jest dodanie id strony do ścieżki.
Zapis daty tak ale ja bym proponował raczej na zasadzie Y/m/d/ czyli łącznie $id_strony/Y/m/d/ w ten sposób ograniczasz ilość plików na katalog. Oczywiście sam serwer przyjmie duże ilości plików w katalogu ale jak przyjdzie ci coś zrobić z katalogiem w którym masz kilkaset tysięcy plików to szczerze współczuję.
Listowanie plików z katalogu to nie najlepszy pomysł, lepiej zapisywać ścieżki w bazie. Będzie to dużo wydajniejsze i nawet powiedziałbym że łatwiejsze.
adiadi
Cytat(sazian @ 17.06.2019, 18:57:17 ) *
$id_strony/Y/m/d/ w ten sposób ograniczasz ilość plików na katalog.


Podkatalogi Y/M/d w katalogu $id_strony raczej nie jest potrzebne. Do strony o jednym ID będzie dodane zazwyczaj ok. 0-4 plików. Czasami będzie więcej, ale raczej nigdy nie przekroczy to 15 plików. Jednak stron będzie kilka, a nawet kilkanaście tysięcy i głównie chodzi mi o to, czy problemem wydajnościowym nie będzie kilka-kilkanaście tysięcy katalogów (jeden katalog dla każdej strony).

Z Twojej wypowiedzi wnioskuję, że najlepiej połączyć obie metody, które chciałem uzyć. Trzymać pliki z katalogu, który zawiera w nazwie $id_strony, a ścieżkę do nich (w zasadzie wystarczy sama nazwa pliku, bo $id_strony będę znać) przechowywać w mysql.
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.