Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: PHP Bilder verwalten ..
AUTOR BEITRAG
Morph

RANG Kloputzer

#1 - 10.01 12:19

Hi ho,

[verwirrende Grundgedanken]
Ich habe keine Ahnung wie ich am besten meine Bilder verwalte.
Nachdem ich meinen Terminkalender gebastelt habe [thx4help @alive]. Möchte ich jetzt jeden Termin Bilder hinzufügen, also kein Ding ... .

Aber jetzt kommt die Frage, wie speicher ich sie am Besten ab. Irgendwie habe ich Bock das ganze in die DB zu packen, mit ner einfache Table [pic_id,img_data; also vereinfacht] und es nachher auslesen. Da ich beim auslesen sowieso jedes Bild erst durch PHP jage, ist es doch ansich egal ob es jetzt von nem Ordner oder von der DB kommt, von der Performence müsste es doch gleich sein? Oder lahmt nachher hier die komplette DB? Hat da jemand Erfahrung?

Oder soll ich es Oldschool in Ordner packen?
Wenn jetzt alle "Ja!" schreien, gerade habe ich das so bei meinem alten Script. Mittlerweile über 25 000 Bilder in einem Ordner. Habe nur FTP Zugang und ich komme in den Ordner nicht ma rein, weil sich da FTP aufhängt.
Also sortieren in mehrere kleine Ordner, aber jetzt kommt ansich die Entscheidene Frage, wie mache ich das am stylischsten? Ich habe nur eine pic_id nachher. Und ich möchte vermeiden extra Feld in der DB zu setzen, wo drinne steht im welchen Ordner es gerade ist. Hat jemand ne Idee?
[/verwirrende Grundgedanken]

[Frage ansich]
Also, ich brauche ein gutes System/Idee wie ich viele Bilder einfach und performant verwalte. Es werden nachher über 20 000 sein.

Danke soweit schon mal ... .
vaest´ark // patrick *circle of confusion*

RANG Master of Clanintern

#2 - 10.01 12:54

Dein FTP-Programm hängt sich bei 25k Dateien auf? Ok, sind kein Pappenstiel, aber trotzdem. Naja.

Bilder nicht als BLOB in die Datenbank. Es gibt noch weitere Gründe, aber die gewichtigsten sind hier (klick) aufgeführt.

Warum lässt du beim Aufruf jedes Bild vom Script bearbeiten? Ich sehe den Sinn nicht, außer den aktuellen Timestamp aufs Bild zu kopieren kann ich mir gerade nichts vorstellen.
Beim Upload direkt die Änderungen durchführen und dauerhaft speichern ist in meinen Augen sehr viel sinnvoller.

Das Problem mit der Bild-ID kannst du umgehen, in dem du einfach im Script anhand der Bild-ID entscheidest in welchem Verzeichnis es zu liegen hat.
Bsp:
IDs, Verzeichnis
1-250, /1/*
251-500, /2/*
501-750, /3/*
751-1000, /4/*
...
Morph

RANG Kloputzer

#3 - 10.01 13:28

Aus Rechte Gründe lese ich das immer mit PHP aus, gewisse User sollen halt gewisse Bilder nicht sehen.

Aber zu deinem Link:

1. Ich muss es ja eh auslesen mit PHP, von daher ist das kleine Script ja egal.

2. Ich brauche eh immer den kompletten BLOB und der Sendepuffer überschreitet ja selten 1 MB pro Bild. Von daher komme ich wohl nicht auf die maximal Größe.

3. Deswegen ja in 3 Normalform.

Jeder sagt zwar: "Nee, mach es nicht!" aber warum eigentlich? bis jetzt gibt es keinen trifftigen Grund, oder?

------------------

Ja stimmt, mit dem Script haste recht. Die billigste Form will mir nicht einfallen.
vaest´ark // patrick *circle of confusion*

RANG Master of Clanintern

#4 - 10.01 13:58

Das kleine Script ist nicht egal, da dein BLOB (Binary Large OBject übrigens) 3x für verschiedene Zwecke im Speicher gehalten wird.
Ist dein Bild jetzt 1 MByte groß, benötigt der Datenbankserver insg. 3 MByte dafür. Für einen einzigen Aufruf!
http://www.mysql.com/news-and-events/newsletter/2003-09/a0000000237.html

(edit)
X Bilder pro Seite brauchen dann natürlich 3*X MByte Speicher...
(/edit)

Verbindungsaufbau (bzw. Kommunikation) zwischen deinem Script und dem Datenbankserver benötigt auch Zeit, die Übertragungsdauer von 1 MByte Daten ist auch nicht zu verachten. Gerade wenn der Datenbankserver nicht lokal installiert sondern über ein Netzwerk angebunden ist. Wobei du die Verzögerung schon merken wirst wenn der DB-Server lokal installiert ist. Die Kommunikation erfolgt da schließlich auch über eine normale TCP-Verbindung, nur halt auf 127.0.0.1.

Schlussendlich: 20000 MByte (salopp gerechnet 20 GByte!) auf dem Datenbankserver in eine einzige Tabelle schmeißen? Na danke.
Gängige RDBMS sind da zwar hart im Nehmen, ich selbst hab Tabellen mit mehreren MByte Daten drin, aber bei DER Menge hätte ich deutliche Hemmungen.
Morph

RANG Kloputzer

#5 - 10.01 14:09

Scheisse - überzeugt ... . Nehme ich doch mal die Ordner Struktur, ich hatte irgendwie den Tick alles schön bei einander zu haben.
Das mit den 3mal im Speicher hängen ist doch ein Argument.
Crush (Anti Däääh)

RANG Master of Clanintern

#6 - 10.01 15:26

Wegen der Rechte Sache: Du könntest den Ordner mit den Bildern per .htaccess sperren und dann die Bilder nach Rechteüberprüfung mit PHP laden und übermitteln (siehe [readafile()]).

Erzeugt zwar auch ein wenig Overhead bei jedem Bildaufruf, da das ganze Bild erstmal durch den PHP Interpreter geschickt wird, aber bei weitem weniger als wenn du die Datenbank dafür benutzt.
Morph

RANG Kloputzer

#7 - 16.01 19:25

Jo, Danke für die Idee, das mach ich auch.
▪вιzzаrє▪

RANG Master of Clanintern

#8 - 19.01 14:37

bei der Reihenfolge, mit der Bild-ID... habe jetzt nur mal den Fred überflogen aber würde ich folgenderemaßen regeln... ist ja sowieso ansich naheliegend...

0-999 Ordner 0
1000-1999 Ordner 1
2000-2999 Ordner 2
(...)