2 Stimmen

Sollte ich alle Bilder im selben Verzeichnis ablegen?

Ich habe eine einfache Frage. Jetzt arbeite ich an einem E-Commerce-Skript und natürlich werden die Benutzer in der Lage sein, Bilder für jedes Produkt hochzuladen (bis zu 10 Bilder für jedes Produkt). Meine Frage ist also, ob ich alle Bilder im selben Verzeichnis ablegen soll (nach einer gewissen Zeit werden es wahrscheinlich Tausende sein) oder ob ich von Zeit zu Zeit neue Bilder erstellen soll? Wird dies die Leistung beeinträchtigen oder andere Probleme verursachen, wenn ich sie alle zusammen ablege?

Vielen Dank im Voraus

1voto

Adam Matan Punkte 116541

Disk-Ansatz

Erstellen einer img übergeordnetes Verzeichnis, mit einem Unterverzeichnis für die Bilder der einzelnen Produkte.

./img
./img/eggs
./img/eggs/eggs1.jpg
./img/eggs/eggs2.jpg
./img/spam
./img/spam/myspamimage.jpg
./img/cheese
...

Auf diese Weise haben Sie alle Ihre Bilder in einer einzigen Baumhierarchie gespeichert, die sehr sinnvoll ist. Wenn Sie eine sehr große Anzahl von Bildern haben (z. B. mehr als 100.000), können Sie die Bilder nach dem Erstellungsdatum gruppieren:

./img
./img/2010-08/eggs
./img/2010-08/eggs/eggs1.jpg
./img/2010-08/eggs/eggs2.jpg
./img/2010-09/spam
./img/2010-09/spam/myspamimage.jpg
./img/2010-09/cheese
...

Auf diese Weise können Sie einige Monate (wahrscheinlich die älteren) in ein Archiv verschieben und das Monatsunterverzeichnis als Link zu einem anderen Datenträger behalten.

Datenbank-Ansatz

Wenn Sie viele Metadaten zu jedem Bild benötigen (z. B. Benutzername, SKU, Beschreibung, Copyright usw.), können Sie die Bilder unter beliebigen Bildnamen speichern (wahrscheinlich img/img0000001.jpg , /img/img0000002.jpg ...) und einen Datenbankeintrag zu führen, der ein Produkt seinem Bild zuordnet. Dies ist sehr nützlich für die Suche nach allen Bildern, denen bestimmte Merkmale (Benutzer, Erstellungsdatum usw.) zugeordnet sind.

1voto

halfdan Punkte 32370

Ich schlage vor, dass Sie sie in getrennte Verzeichnisse aufteilen (z. B. /Jahr/Monat/, wobei Jahr und Monat das Jahr und den Monat des Zeitpunkts sind, zu dem das Bild hochgeladen wurde; alternativ können Sie auch einfach product_id/ verwenden).

Das Problem ist die von den meisten Linux-Dateisystemen verwendete Inode-Struktur. Sie benötigt mehr Operationen, wenn die Anzahl der Dateien in einem Verzeichnis zunimmt.

0voto

Wie Adam sagte.

Standardverzeichnis wie Images_Products erstellen

Verwenden Sie die mkdir-Funktion von php.net, um Verzeichnisse zu erstellen, nachdem der Benutzer ein Bild hochgeladen hat.

Versuchen Sie, die Namen der Verzeichnisse dynamisch mit einigen Variablen aus dem Produktnamen zu machen, den sie hinzugefügt haben.

Beispiel: $beer_heineken

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X