PHP: Medienbibliothek erstellen?
-
Hi,
ich möchte mir mittels PHP(Momentan wohl eh das sinnigste dafür) eine datenbank anwendung erstellen, die Medien verwalten und ausgeben kann, in meinem falls audio, video und bilder.
da sich dafür als datenbank mysql anbietet werd ich das wohl gleich benutzen
Beim konzeptionieren ist mir jedoch folgende frage in den sinn gekommen:
Wie macht man am sinnvollsten die assotiation zw. Datenbank und realer datei, bzw. speichert man in in einer seperaten tabelle den absoluten pfad zur datei oder speichert man die datei direkt in der db oder vielleicht ganz anders? Was wäre denn das sinnvollste, da die dateien ja so zw. 1MB-800MB groß sein können und ich nehm mal an etwa um die 5000 dateien sind.
mfg
-
Bei den Dateigrößen würde ich davon abraten es in der Datenbank zu speichern...
ich würde ein Dateihandling (Dateiverwaltung in Verbindung mit einer
guten Verzeichnisstruktur) implementieren bei der zum Beispiel Datei in der
Verzeichnisstruktur abgespeichert werden...
-
aha,
also den absoluten pfad in einer tabelle abspeicher, damit die DB direkt drauf zeigen kann, oder gibts noch galantere lösungen?
-
Hallo,
um dich noch mehr zum nachdenken anzuregen...
Du speicherst den absoluten Pfad; was machst du:
- wenn man die Datei umbenennt
- oder kopiert/verschiebt
?Der Musikplayer amaroK hat das Problem recht clever geloest (dort werden Musiksammlungen auch in ner DB gespeichert): Zu jeder Datei wird der absolute Pfad, sowie ein Hash und optional Metadaten in die DB geschrieben. Verschiebst/Kopierst du Dateien, kann man das durch den gleich bleibenden Hash nachverfolgen. Scheint mir der beste&einfachste Weg zu sein.
-
naja ich bin jetzt mal davon ausgegangen die dateien liegen wo sie liegen
wie soll das gehen mit einem hash wenn die datei verschoben und umbenannt ist? dann müßte das system doch die ganze platte durchsuchen um vielleicht die datei wiederzufinden oder?
Übrogens deshalb auch der gedanke die dateien direkt in der DB abzulegen.
-
In einer DB moechtest du bestimmt nicht deine Dateien speichern. Dann muesstest du schon nen eigenen Dateibrowser/Bildbetrachter/Movieplayer/etc.. programmieren, oder ein VFS für eine DB - wie schwer das anscheinend ist, sieht man an WinFS
Weitere Probleme treten auf: Dateien tauschen, Backup, Systemwechsel, korrupte DB Indice usw...Die Idee mit dem Hash ist: Jede neue Datei wird gehasht. Kommt eine neue Datei hinzu (durch kopieren/verschieben/neuanlegen) wird der Hash mit allen in der DB gespeicherten Hashes verglichen. Sind die Prüfsummen gleich, handelt's sich um die gleiche Datei - dann DELETE old, INSERT new.
Ist mein Vorschlag mit den Erklärungen jetzt verständlicher?
-
hm, irgendwie schon... werd ich mal schaun müssen wie das mit dem hash so geht.
-
md5(implode(file($filename)))