wieviele dateien erträgt ein verzeichnis?

rasputin

Lounge-Member
ich habe hier ein verzeichnis mit wachsender anzahl bilder. gibt es probleme mit dem dateisystem, wenn sich mehrere tausend dateien im gleichen verzeichnis befinden?
 
Das denke ich nicht. Das Betriebssystem wird hoffentlich schon mit einer grossen Anzahl Dateien umgehen können (sofern es sich um eine aktuelle Version eines gängigen OS handelt) und PHP sollte zumindest ab Version 5 gefeit gegen überlaufende Variablenspeicher sein.
 
ich habe hier ein verzeichnis mit wachsender anzahl bilder. gibt es probleme mit dem dateisystem, wenn sich mehrere tausend dateien im gleichen verzeichnis befinden?
Rein gefühlsmäßig (weil ich jetzt keine direkten Belege oder Links dafür habe), würde ich sagen, dass es durchaus von Betriebssystem, bzw. verwendetem Dateisystem abhängig ist. Außerdem solltest Du bedenken, dass Du evtl. per FTP in das Verzeichnis reinmusst, um Änderungen vorzunehmen, oder es müssen Backups angelegt werden, usw. Also selbst, wenn der Server damit kein Problem hätte, sollte man diesen Aspekt berücksichtigen. Wenn ich mal zum Vergleich die Proxy-Software squid hernehme, so legt diese für den Dateicache standardmäßig 16 Unterverzeichnisse an, in denen wiederum 256 Unterverzeichnisse liegen (alle hexadezimal durchnummeriert) und erst dort liegen die eigentlichen Dateien. So ein Proxy muss vermutlich mit wesentlich mehr Dateien umgehen können, als Deine Software, aber die Entwickler haben sich vermutlich nicht nur Gedanken darüber gemacht, sondern sicherlich auch einiges an Tests gefahren.

Rein physikalisch kann man es sich so vorstellen, dass das Inhaltsverzeichnis auch irgendwo auf der Platte gespeichert wird. Pro physikalischem Plattensektor passen n Verzeichnis-Einträge rein, je größer das Verzeichnis, desto mehr physikalische Sektoren werden benötigt. Da die Anzahl der Verzeichniseinträge nicht von vorneherein feststeht, liegen diese Sektoren überall auf der Platte verstreut (weil sie dynamisch, bei Bedarf alloziert werden). Wenn jetzt eine Datei in einem Verzeichnis geöffnet werden soll, muss also zunächst die Kette der Verzeichnissektoren ausgelesen werden. Je länger die ist, desto mehr hüpft der Lesekopf auf der Platte herum, bevor überhaupt ein einziges Byte der Datei gelesen wurde. Dieses Problem kann zwar durch Verwendung von binären Suchbäumen entschärft werden, ich weiß aber nicht, welches Dateisystem so aufgebaut ist.

Bei der Umsetzung kann man eine Hashfunktion verwenden, die die Dateien möglichst gleichmäßig auf die einzelnen Unterverzeichnisse verteilt. Eine einfache Version einer Hashfunktion wäre z.B. der Anfangsbuchstabe der Datei. Da die Verteilung aber durchaus unglücklich sein kann, ist diese vermutlich nicht sonderlich gut.
 
hatte auch mal so ein Verzeichnis. Wie albu bereits bemerkt hat, macht es keinerlei spass da mit einem ftp-Prog ran zu müssen, bzw war dies irgendwann nicht mehr zumutbar. Ansonsten gab es keinerlei Probleme. PHP hat halt dem entsprechend lange gebraucht um das Verzeichnis auszulesen.
 
Zurück
Oben