Fat32Tony schrieb:
Nun 2 Fragen dazu:
1. Macht das aus eurer Sicht her Sinn?
Bild erzeugen? Macht sehr viel Sinn.
Bild in die Datenbank packen? Macht keinen Sinn.
2. Wenn ich ein script dazu bastel, sollte ich es täglich ausführen oder immer bei Aufruf der Hauptseite etc...
Weder noch. Mach es, wenn:
a) kein Vorschaubild vorhanden ist
oder
b) das Vorschaubild älter ist als das echte Bild (du also was am Original geändert hast)
e-Funktion schrieb:
Unter Umständen kann es schon sinnvoll sein, Dateien in die DB zu speichern. Beide Varianten bringen Vor- und Nachteile mit sich.
Dateien in der Datenbank zu speichern bringt quasi keine Vorteile, nur Nachteile.
- Im Falle von Replikation (Master-Slave oder Master-Master) muss eine riesige Zeile repliziert werden. Das ist lahmarschig hoch 10.
- Schreibvorgänge am Bild lösen unter Umständen lange Table-Locks aus. Geht gar nicht.
- Um das Bild anzuzeigen, muss es erst aus der Datenbank gelesen, von PHP (oder sonstwas) geparsed, mit ordentlichen Headern versehen und an den Webserver verfüttert werden. Im Vergleich dazu ist ein direkter Filesystem-Zugriff durch den Webserver quasi instant. Webserver (allen voran nginx & Cherokee) sind pfeilschnell, wenn sie statische Ressourcen vom Dateisystem ausgeben. Verglichen damit... Webserver übergibt Anfrage an PHP, PHP übergibt Anfrage an DB, DB wartet auf eventuelle Table Locks, DB liest Tabelle von Festplatte, DB durchforstet Spalten, DB füttert PHP, PHP baut einen Header und echo't den Kram an den Webserver, Webserver gibt Kram aus... Schrott. Totaler Schrott.
- Von Filesysteme lassen sich deutlich leichter inkrementelle Backups ziehen
- Große BLOBs (und TEXTs) führen bei aktuellen MySQL/MariaDB-Versionen bei Verwendung von InnoDB zu unvorhergesehenen Problemen mit der Log-Size.
- Portabilität... Ich sollte mal eine alte gehackte TYPO3 - Seite in ein anderes CMS portieren und dafür Automatismen für die Inhalte schaffen... Schönen Dank, wenn jedes Bild sinnlos als BLOB-Feld in der DB definiert ist.