Bild in mysql oder Space speichern?

Drogenfahnder

Well-known member
ID: 167222
L
28 April 2006
333
6
Hallo,
Ich möchte so ein Art BIlder upload machen. Nun ist die Frage da wo ich das Bild speichern soll. In der Datenbank oder auf em Space?
Was meint ihr dazu?
Was ist besser?

greez Drogenfahnder
 
Was besser ist oder nicht bleibt am ende immer Dir überlassen.

Aber Ressorcen schonender ist auf jedenfall das Speichern der bilder direkt auf der Platte des Servers anstatt die bilder in einer MYSQL Datenbank zu speichern.

Stell Dir vor Du hast 100 Bilder á 1MB.. sind dann 100MB Datenbankspeicher fort und das auslesen des Bildes per php von der Datenbank dauert wohl *glaub ich* doppelt so lange.

> Bild aus DB file holen > File mit php parsen > bild an Browser senden.

Wenn es direkt von der Platte kommt wäre es wohl

> Bild aus verzeichniss holen > bild an browser senden.

Also um ehrlich zu sein hab ich es noch nie probiert ein bild in die Datenbank zu speichern aber da ich hier bei Klamm schon ne menge thread darüber gelesen haben das einem davon abgeraten wird rate auch ich Dir davon ab :)
 
dokumente sollte man generell immer im dateisystem ablegen, ansonsten wird die db nur viel zu schnell überfüllt und das geht sehr stark auf die performance. es genügt wenn du dir die dateiinformationen in der db speicherst.
 
okay vielen dank.
und ist es dann besser wenn ich in der db den vollen Pfad in eine Spalte mach oder verzeichnis,format, Dateinahme extra? WAs wird da normalerweise gemacht?
 
und ist es dann besser wenn ich in der db den vollen Pfad in eine Spalte mach oder verzeichnis,format, Dateinahme extra? WAs wird da normalerweise gemacht?
"Normalerweise" wird gemäß der Normalformen atomar gespeichert.

Wenn du jedem User ein extra Verzeichnis gibst, sind das auf jeden Fall 2 Spalten (User, Bildname). Ansonsten würde ich den Pfad komplett in einer Spalte ablegen.

Ich bin mir nicht ganz sicher, wie die Restriktionen für Dateisysteme bezüglich der maximalen Dateianzahl in einem Verzeichnis sind. Ich hätt erstmal alles in ein Verzeichnis geworfen.
 
Also ich ahbe mal selber einen Bilderuplaod-Service gemacht.

Ich hab dies folgendermassen gemacht:

Ich habe einen Ordner AUSSERHALB des HTTP-Dir gemacht, damit die Anwender nicht die Bilder direkt verlinken können (falls das nicht erlaubt sein soll).
Dann habe ich die Bilder via imagecreatefromXXX (imagecreatefrompng, imagecreatefromgif, imagecreatefromjpeg etc... ) aus dem Dir geladen, in dem die Daten sind. Die Dateinamen der Bilder im Verzeichniss sind folgendermassen aufgebaut damit es keine Doppelten gibt:

1.gif
2.jpg
.....

Also die ID des Bildes (autoincrement der MySQL Tabelle) inkl. Dateianhang.

Die Datenbank ist folgendermassen aufgebaut:
Code:
____________________________________

| ID | Bildname |   Datum    |       IP        |

| 1  | bild.gif    | 12.4.1999 | 192.168.1.1 |
...


vllt hilfts dir weiter, muss leider jetzt grad sofort weg und kann ncihf ertig schreiben ;) see ya
 
@Bani du hast mir sehr geholfen das ist eine gute Idee. Kannst ja weiterschreiben wenn Zeit hast ;-)
das ich keine doppelten files habe benutze ich uniqid("") wenn ich halt merh asl 1ne in der Millisekunde habe is blöd.
Gibt es bei einem normalen WEbspace nen Order der außerhalb vom http ist? Wenn ja wie heißt der?
 
Zuletzt bearbeitet:
zum Beispiel wenn du ein AdministratorenTool wie Confixx hast, gibt es ordner, welche Public sind (in Confixx soviel ich weiss "http") und nonpublics welche nicht via www.meinebeispielurl.de/ordnername/ aufgerufen werden können.
Hast du selber eine httpd.conf vom Apache? Dann könntest du einen Public-Ordner mit deinem PicUplaod bestimmen und die anderen Verzeichnisse nicht.

Du musst aber aufpassen, dass dein open basedir auch die anderen Ordner einschliesst und nicht nur den Publicordner, sonnst kann readfile(); :)biggrin: @ tH) und so weiter (imagecreatefromXXX :ugly: ... ) nicht auf die Bilder zugreifen und auch nicht abspeichern.

(so ich muss mal wieder weiter...^^)