Bilderupload - wieviele Dateien maximal pro Ordner (Performance)
phpfreak
- php
Hallo.
In meiner Community kann man Bilder hochladen.
Wieviele Bilder sollten maximal in einem Ordner sein.
Je nachdem würde ich die dann alle in einen Ordner machen, alle nach Monat/Jahr sortiert oder z.B. sagen "Alle 100 Bilder, wird ein neuer erstellt".
Ich nutze PHP 5.3 und Apache 2.
Bald sollen die Bilder aber auf einen Nginx Webserver gepackt werden, damit man schneller auf sie zugreifen kann.
Lg, Phpfreak
Wieviele Bilder sollten maximal in einem Ordner sein.
Ich nutze PHP 5.3 und Apache 2.
Welcher Webserver, geschweige denn welche Skriptsprache, ist völlig wurscht. Für den Verzeichnis- und Dateizugriff ist das Betriebssystem zuständig und die Leistung der Maschine ausschlaggebend.
alle nach Monat/Jahr sortiert
Aufteilen solltest du nach einem Kriterium, das du an dieser Stelle auch wirklich brauchst. Hast du die Kriterien alle in einer Datenbank stehen, brauchst du sie nicht im Dateisystem zu duplizieren, auf dass du zusätzlich zum Dateinamen noch weitere Daten brauchst, um die Datei zu finden.
Es bietet sich beispielsweise an, Verzeichnisse je Anfangszeichen des Dateinames anzulegen. Auf die Weise braucht man für den Zugriff nur den Dateinamen, der Pfad dorthin ergibt sich aus ihm selbst (anna.jpg -> a/anna.jpg, berta.png -> b/berta.png, etc).
h1,
Es bietet sich beispielsweise an, Verzeichnisse je Anfangszeichen des Dateinames anzulegen. Auf die Weise braucht man für den Zugriff nur den Dateinamen, der Pfad dorthin ergibt sich aus ihm selbst (anna.jpg -> a/anna.jpg, berta.png -> b/berta.png, etc).
Also, der Tipp ist erstklassig, da sag ich mal Danke, auch wenn ich nicht gefragt habe!
Hotti
Welcher Webserver, geschweige denn welche Skriptsprache, ist völlig wurscht. Für den Verzeichnis- und Dateizugriff ist das Betriebssystem zuständig und die Leistung der Maschine ausschlaggebend.
Und wie kann ich es diesem noch erleichtern?
Ich denke es ist einfacher Mehrere Ordner mit wenigeren Dateien zu durchsuchen als ein Ordner mit später 100000000 Dateien.
Wir reden von einer riesigen Anzahl von Bildern!
Tach,
Und wie kann ich es diesem noch erleichtern?
welches Betriebssystem, welches Dateisystem?
mfg
Woodfighter
Hi,
Für den Verzeichnis- und Dateizugriff ist das Betriebssystem zuständig und die Leistung der Maschine ausschlaggebend.
Und wie kann ich es diesem noch erleichtern?
Durch Wahl des Betriebssystems und des File-Systems.
Windows-Dateisysteme neigen ja bekanntlich stark zur Fragmentierung (NTFS nicht mehr so stark wie vorherige Windows-FS).
Und Linux hast du mehr Auswahl an Dateisystemen - da findet sich sicherlich auch irgendwo eine Übersicht, was die jeweiligen Stärken und Schwächen sind, die du gegen deine spezifische Anforderung abwägen kannst.
Ich denke es ist einfacher Mehrere Ordner mit wenigeren Dateien zu durchsuchen als ein Ordner mit später 100000000 Dateien.
Natürlich wirkt sich auf das „Suchen“ einer angeforderten Datei in der FAT (oder was immer das jewelige FS stattdessen verwenden mag) aus, noch bevor es um das eigentliche Auslesen des Dateiinhaltes geht.
Allerdings wollen die Verzeichnisse innerhalb des Pfades ja auch erst mal gesucht und gefunden werden. Wenn du fünftausend Bilder in fünf Verzeichnissen durch hundert Verzeichnisse mit jeweils fünfzig Bildern ersetzt, muss das also noch nicht unbedingt ein Vorteil sein. (Vielleicht finden sich auch diesbezüglich Benchmarks, oder auch Angaben beim jeweiligen Anbieter des FS.)
Wir reden von einer riesigen Anzahl von Bildern!
Riesig ist relativ.
Eine noch feinere Abstufung der Verteilung der Dateien auf Verzeichnisse mag sich dann vielleicht anbieten - also (beispielhaft) statt ./a/anna.jpg weiter unterteilt in ./a/n/anna.jpg.
Wenn „riesig“ dann wirklich riesig wird, Größenordungen a la Flickr, dann wird natürlich noch die Verteilung auf mehrere Maschinen hinzukommen.
Und das ist ja jetzt erst mal nur der Teil, der sich auf das Auffinden der Daten auf dem/den Server(n) bezieht.
Der andere Teil ist dann die Auslieferung an den Client. Je nachdem, wie viele Bilder einzelne Nutzer „gleichzeitig“ (pro Seite) anfordern und wie viele Nutzer gleichzeitig zugreifen werden, werden dann ggf. noch die Wahl des Webservers, Aufteilung auf verschiedene Domains (wg. limitierter Anzahl paralleler HTTP-Requests im Client), Load-Balancing u.ä. Stichwörter interessant.
MfG ChrisB
Hallo,
Windows-Dateisysteme neigen ja bekanntlich stark zur Fragmentierung (NTFS nicht mehr so stark wie vorherige Windows-FS).
das ist auch ein Mythos von NTFS, der in dieser Pauschalität falsch ist.
Mein Alltags-PC hat eine einzige Datenpartition in NTFS - das musste sein, weil ich diese Partition als Arbeitsbereich für Videoschnitt verwende, und Videodateien haben die Tendenz, gern mal etwas größer zu sein, gelegentlich auch über 4GB. Also fällt FAT32 aus.
Normalerweise wird eine rund 2GB große MPEG-Datei in ungefähr 2min gespeichert, nachdem ich die Werbeblöcke rausgeschnitten habe. Mit zunehmender Fragmentierung der NTFS-Partition steigt dieser Zeitbedarf aber ohne weiteres auf über 5min. Und diesen Fragmentierungsgrad erreicht die Partition auch mit NTFS innerhalb weniger Wochen.
Man muss die Aussage "NTFS fragmentiert weniger" daher genau hinterfragen. Die Aussage mag richtig sein, wenn man die Fragmentierung einzelner Dateien in sich betrachtet. Die Fragmentierung des freien Speichers auf dem Datenträger ist allerdings dadurch tendentiell noch stärker als auf einem FAT32-Volume - aber das fällt nur auf, wenn die Dateien, die dann noch gespeichert werden sollen, sehr groß sind.
Ciao,
Martin
Hello,
In meiner Community kann man Bilder hochladen.
Wieviele Bilder sollten maximal in einem Ordner sein.
Die Frage nach der Anzahl will ich mal ignorieren, aber die Frage nach der Sicherheit sollte nochmals gestellt werden, auch wenn ich die weiteren Teile des Artikel noch nicht hochgeladen habe...
http://wiki.selfhtml.org/wiki/Artikel:PHP/File_Upload
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg