Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Przechowywanie rozmiaru pliku, Jak optymalnie przechowywać rozmiar pliku przesłanego na serwer?
krzywy5830
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 5
Dołączył: 14.10.2012

Ostrzeżenie: (0%)
-----


Piszę sobie dysk internetowy, coś jak google drive. Pliki będą przechowywane na dysku, natomiast informacje o pliku takie jak jego nazwa i tak dalej będą przechowywane w bazie danych (w tabeli files). Jeden użytkownik ma mieć możliwość wrzucenia maksymalnie tylko np. 1 GB danych (administrator będzie miał możliwość konfiguracji, będzie można ustawić w pliku konfiguracyjnym ile maksymalnie miejsca na dysku może zająć użytkownik). Dodatkowo chcę mieć możliwość wyświetlenia użytkownikowi rozmiaru każdego pojedyńczego pliku. Aby to zrobić muszę gdzieś zapisywać rozmiar plików. Wpadłem na następujące rozwiązania:

1. Przechowuję rozmiar każdego pojedyńczego pliku w bazie danych jako integer (w bajtach) w tabeli files, aby sprawdzić ile miejsca zajmuje dany użytkownik to liczę sumę rozmiarów wszystkich plików danego użytkownika odpowiednim zapytaniem MySQL (SELECT SUM(size) FROM files WHERE uid = 69, gdzie uid to ID użytkownika, do którego należą pliki a size chyba nie muszę tłumaczyć).

2. Przechowuję rozmiar każdego pojedyńczego pliku w bazie danych jako string (np. 21 KB, 148 GB, 71,21 MB) w tabeli files i dodatkowo przechowuję sumę rozmiaru wszystkich plików danego użytkownika jako integer w bajtach, w tabeli users.

3. Nie przechowuję rozmiaru plików w bazie danych, natomiast pobieram ją za każdym razem za pomocą PHP korzystając np. z DirectoryIterator. Musiałbym wtedy pobrać z bazy danych wszystkie pliki, które należą do danego użytkownika a potem przejechać przez nie DirectoryIteratorem. Moim zdaniem bez sensu.

Zastanawiam się, które rozwiązanie jest najbardziej optymalne i sensowne. A może macie jeszcze jakieś pomysły?
Go to the top of the page
+Quote Post

Posty w temacie
- krzywy5830   [PHP][MySQL] Przechowywanie rozmiaru pliku   10.01.2017, 11:58:43
- - nospor   oczywiscie ze nr1. Skad pomysl na pozostale 2?   10.01.2017, 14:28:17
- - viking   3 przecież nie jest złe. Katalogi mogłyby być id u...   10.01.2017, 14:48:09
|- - Puszy   Cytat(viking @ 10.01.2017, 14:48:09 )...   10.01.2017, 15:08:08
- - viking   Nawet gdyby to było w ten sposób robione, to będzi...   10.01.2017, 15:16:19
|- - Puszy   Cytat(viking @ 10.01.2017, 15:16:19 )...   10.01.2017, 15:40:35
- - nospor   Jakim cudem nr3 ma byc szybsze od 1? Przeciez on ...   10.01.2017, 15:29:15
- - viking   A czy ja gdziekolwiek pisałem o DirectoryIterator?   10.01.2017, 16:25:42
- - nospor   Pisales o nr3, ktore to jest DirectoryIteratorem. ...   10.01.2017, 16:27:50
- - viking   Nr 3 jest: np. z DirectoryIterator. Drobna różnica   10.01.2017, 16:31:57
- - nospor   CytatMusiałbym wtedy pobrać z bazy danych wszystki...   10.01.2017, 16:34:12
- - krzywy5830   Też uważam, że nr 3 jest bez sensu. Waham się międ...   10.01.2017, 17:04:19
- - trueblue   Alternatywą dla opcji 2 są dwa pola DECIMAL (XXX,X...   10.01.2017, 17:11:23
|- - krzywy5830   Cytat(trueblue @ 10.01.2017, 17:11:23...   10.01.2017, 17:24:54
- - trueblue   Jeśli dobrze liczę to DECIMAL(5,2) zajmie 5 bajtów...   10.01.2017, 17:40:46
- - Pyton_000   Ale macie dylematy.... Wpis w tabeli files unsign...   10.01.2017, 20:07:00
|- - krzywy5830   Cytat(Pyton_000 @ 10.01.2017, 20:07:0...   11.01.2017, 10:00:16
- - nospor   Toz sam napisales ze user bedzie mial limit na sum...   11.01.2017, 11:00:05
|- - krzywy5830   Cytat(nospor @ 11.01.2017, 11:00:05 )...   11.01.2017, 11:08:14
- - Pyton_000   Może być i BigInt, nie zrobi Ci to różnicy. Zawsze...   11.01.2017, 11:02:27


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: 21.08.2025 - 12:57