[PHP, ogólne] Zależność ilości plików od zajmowanej przestrz


(system) #1

Witam.

Jeżeli to nieprawidłowy dział - przepraszam, bardziej trafnego nie znalazłem.

Napisałem mały kalkulator optymalizacji zapisu na CD/DVD/BR w PHP. Działa niemal doskonale, jednak ma wadę: nie analizuje zależności pomiędzy ilością plików, długością ich nazw (ścieżki) a przestrzenią zajmowaną dodatkowo przy nagrywaniu płyt. Wujek Google znajduje mi co najwyżej rozmiary sektorów, ale bez informacji jak to się ma do danych informacyjnych o plikach.

Czy posiada ktoś materiały, które mogły by być pomocne do ustalenia tej zależności?

Chodzi oczywiście o zwykłe dane, nie audio czy video.

Pozdrawiam.


(Pablo_Wawa) #2

Rozumiem, że chodzi Ci o rzeczywisty rozmiar pliku, tj. ilość miejsca jaki on zajmuje?

http://pl.wikipedia.org/wiki/CD-ROM


(system) #3

I tak i nie.

Owszem byłem na wiki znacznie wcześniej (jakże by inaczej). Jednak nie wiem jak to przełożyć na zależność z tematu. Wiem, że rzeczywista przestrzeń jest większa niż rozmiar pliku, nie znalazłem jednak żadnych informacji jak to wyliczać. Przykładowo, jak są dwa wielkie pliki np. po 2,2GB (umownie) to zmieszczą się na płycie, ale jak będzie np. 200 plików po 0,022 GB to już nie wejdą na taką płytę. I chodzi właśnie o tą zależność - ilość plików od zajmowanej przez nich rzeczywistej przestrzeni. Może jest jakaś zależność przykładowo, że informacja o pliku zajmuje jeden pełny sektor, albo jeden plik zajmuje zawsze pełne sektory niezależnie czy jakaś część sektora zostaje wolna czy nie, itd.

Programy do nagrywania potrafią to określić, więc na pewno można to wyliczyć. Tylko nie wiem w jaki sposób.

Pozdrawiam.


(Pablo_Wawa) #4

Słowo klucz: fragmentacja wewnętrzna plus http://en.wikipedia.org/wiki/ISO_9660


(system) #5

Tak, rzeczywiście to “klucze”. Owszem je znam, ale potrzebuję dowiedzieć się więcej.

Jeśli DVD ma 2295104 bloki, każdy ma po 2048 bajtów to razem jest ~4.7Gbajtów (4.377GB). Tak więc jak będzie plik 3kb (3072 bajty) to zajmie on pełne 2 bloki, czyli 4096 bajtów i straci się 1024 bajty. W przypadku 200 plików największa możliwa strata to 200*2047=409400 bajty (400kB). Ja jednak zauważam, że przy 200 plikach o łącznej wadze 1DVD straty sięgają rzędu 10-15MB! Domyślam się, że w grę wchodzą dane informacyjne jak nazwy plików, katalogi, odnośnik do określonego bloku. I właśnie o to chodzi: ile to zajmuje, jak to policzyć.

Pozdrawiam.

Sebastian


(Pablo_Wawa) #6

Dobrze rozumujesz. A te dane, o które Ci chodzi, to znajdziesz w opisach systemu plików ISO 9660 (oraz innych stosowanych dla CD i DVD). Tylko to nie jest tak ładnie podane, jak byś tego oczekiwał.

Musisz się wgryźć w specyfikację, np. te:

http://users.telenet.be/it3.consultants.bvba/handouts/ISO9960.html

http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-119.pdf


(system) #7

No cóż, niestety sobie z tym nie poradzę. Albo nie rozumiem, albo z analizą jest znacznie więcej zabawy niż przewidywałem. :frowning:

Dziękuję mimo to.