Wie MP3 aus Datenbank abrufen?
Wie MP3 aus Datenbank abrufen?
am 01.11.2006 09:06:34 von Gunnar Lindenblatt
Hallo!
Es ist ja eine technische Unsitte geworden, Bilder als BLOB in einer
Datenbank-Tabelle abzuspeichern, ,,dynamisch" abzurufen und auf
einer Web-Seite einzubinden. Dies klappt bei mir auch ganz gut. (Meine
Entschuldigung für so einen Unsinn: So ist der Abgleich zwischen
internem und öffentlichem Server leichter.)
Wie kann ich selbiges für MP3-Dateien tun? MP3 als BLOB abzuspeichern
ist natürlich kein Problem, aber wie sieht das PHP-Script aus, daß
daraus einen Link oder Button bastelt, der auf Klick diese Datei
abspielt. (Start eines externen Players ist vollkommen ausreichend, ich
mag diese eingebetten Lösungen ehedem nicht.)=20
Grüße=20
Gunnar
Re: Wie MP3 aus Datenbank abrufen?
am 01.11.2006 10:33:15 von Johannes Vogel
Hi Gunnar
Gunnar Lindenblatt wrote:
> Es ist ja eine technische Unsitte geworden, Bilder als BLOB in einer
> Datenbank-Tabelle abzuspeichern, ,,dynamisch" abzurufen und auf
> einer Web-Seite einzubinden. Dies klappt bei mir auch ganz gut. (Meine
> Entschuldigung für so einen Unsinn: So ist der Abgleich zwischen
> internem und öffentlichem Server leichter.)
> Wie kann ich selbiges für MP3-Dateien tun? MP3 als BLOB abzuspeichern
> ist natürlich kein Problem, aber wie sieht das PHP-Script aus, daß
> daraus einen Link oder Button bastelt, der auf Klick diese Datei
> abspielt. (Start eines externen Players ist vollkommen ausreichend, ich
> mag diese eingebetten Lösungen ehedem nicht.)
Haben dir die abschreckenden Antworten aus d.c.d.mysql nicht gereicht?
BLOB ist BLOB (mit Bild hat das nichts zu tun, sondern mit Binary).
Und den content-type rauszufinden, den du ausgeben musst, wird auch
keine grosse Kunst sein, oder?
HTH, Johannes
Re: Wie MP3 aus Datenbank abrufen?
am 01.11.2006 14:15:33 von Hadanite Marasek
Zunächst: Schau Dir mal PDO an, damit kannst Du - wenn es Dein Server
unterstützt - recht komfortabel mit Blobs umgehen.
Ansonsten (verkürzt):
select id, titel from mp3_table.
drübergehen und für jeden eintrag
im Script mp3download einfach den entsprechenden BLOB rausholen und
ausgeben, davor header("Content-Type: audio/mpeg;");
> Wie kann ich selbiges für MP3-Dateien tun? MP3 als BLOB abzuspeichern
> ist natürlich kein Problem, aber wie sieht das PHP-Script aus, daß
> daraus einen Link oder Button bastelt, der auf Klick diese Datei
> abspielt. (Start eines externen Players ist vollkommen ausreichend, ich
Re: Wie MP3 aus Datenbank abrufen?
am 01.11.2006 14:18:04 von Bernd Muent
Gunnar Lindenblatt schrieb:
> Es ist ja eine technische Unsitte geworden, Bilder als BLOB in einer
> Datenbank-Tabelle abzuspeichern, ,,dynamisch" abzurufen und auf
> einer Web-Seite einzubinden. Dies klappt bei mir auch ganz gut.
Klar mag das klappen, aber von der Performance her ist das grausig!
Siehe: http://www.php-faq.de/q/q-db-blob.html
>(Meine
> Entschuldigung für so einen Unsinn: So ist der Abgleich zwischen
> internem und öffentlichem Server leichter.)
Merkwürdiges Argument. Bilder gehören ins Filesystem, in deinem Fall
halt in ein Verzeichnis, das von beiden Servern gemountet wird.
> Wie kann ich selbiges für MP3-Dateien tun? MP3 als BLOB abzuspeichern
> ist natürlich kein Problem, aber wie sieht das PHP-Script aus, daß
> daraus einen Link oder Button bastelt, der auf Klick diese Datei
> abspielt.
Genau wie bei den Bildern:
- Name/Pfad des Bildes aus der Datenbank holen
- Wenn existent:
- Content-Header senden
- Inhalt mit readfile ausgeben:
Siehe: http://de3.php.net/readfile
- (Start eines externen Players ist vollkommen ausreichend, ich
> mag diese eingebetten Lösungen ehedem nicht.)
Darauf hast du nicht wirklich Einfluss. Das ist Sache der
Client-Konfiguration. Wenn du als Content-Type
"application/octet-stream" sendest, wird die Datei höchstwahrscheinlich
von keinem Plugin geöffnet, sondern erst nach Doppelklick auf der
heruntergeladenen Datei gestartet. Aber der IE will da immer besonders
intelligent sein und ist manchmal nicht mal davon abzuschrecken, die
Datei mit einem Plugin zu öffnen.
B.
--
BM Computer-Services, Bergmannstr. 66, 10961 Berlin
Webdesign, Internet, Layout und Grafik
Tel.: 030/20649400, mobil 0175/7419517, Fax: 030/20649401
Web: http://www.bmservices.de, eMail: kontakt@bmservices.de
Re: Wie MP3 aus Datenbank abrufen?
am 01.11.2006 14:48:45 von Hadanite Marasek
>> Es ist ja eine technische Unsitte geworden, Bilder als BLOB in einer
>> Datenbank-Tabelle abzuspeichern, ,,dynamisch" abzurufen und auf
>> einer Web-Seite einzubinden. Dies klappt bei mir auch ganz gut.
>
> Klar mag das klappen, aber von der Performance her ist das grausig!
> Siehe: http://www.php-faq.de/q/q-db-blob.html
Der Artikel ist fa^H^Hveraltet/ungenau. Zum ersten gibt es keinerlei
Information, von wann der Artikel genau ist und auf welche Versionen von
PHP/MySQL er sich genau bezieht.
Die Aussage, dass MySQL keine referentielle Integrität besitzt, ist seit
einigen Versionen überholt. Zudem hat das nichts mit referentieller
Integrität zu tun, weil die sich ja nur auf die Datenbank selbst bezieht.
Wenn Performance zu einem Problem wird, würde ich cachen.
Re: Wie MP3 aus Datenbank abrufen?
am 01.11.2006 15:10:49 von Bernd Muent
Hadanite Marasek schrieb:
> Der Artikel ist fa^H^Hveraltet/ungenau. Zum ersten gibt es keinerlei
> Information, von wann der Artikel genau ist und auf welche Versionen von
> PHP/MySQL er sich genau bezieht.
Mag sein.
Aber die Grunderegel ist immer und unabhängig von der Version:
"Moral: You never want to feed from a database what can be fed as static
content."
=> Keine Bilder, MP3s oder was auch immer in statischen Dateien liegt,
in die Datenbank.
B.
--
BM Computer-Services, Bergmannstr. 66, 10961 Berlin
Webdesign, Internet, Layout und Grafik
Tel.: 030/20649400, mobil 0175/7419517, Fax: 030/20649401
Web: http://www.bmservices.de, eMail: kontakt@bmservices.de
Re: Wie MP3 aus Datenbank abrufen?
am 01.11.2006 15:43:51 von Axel Schwenke
Bernd Muent wrote:
> Gunnar Lindenblatt schrieb:
>
>> Es ist ja eine technische Unsitte geworden, Bilder als BLOB in einer
>> Datenbank-Tabelle abzuspeichern, ,,dynamisch" abzurufen und auf
>> einer Web-Seite einzubinden. Dies klappt bei mir auch ganz gut.
>
> Klar mag das klappen, aber von der Performance her ist das grausig!
> Siehe: http://www.php-faq.de/q/q-db-blob.html
ebenso
http://mysqldump.azundris.com/archives/36-Serving-Images-Fro m-A-Database.html
> >(Meine
>> Entschuldigung für so einen Unsinn: So ist der Abgleich zwischen
>> internem und öffentlichem Server leichter.)
>
> Merkwürdiges Argument. Bilder gehören ins Filesystem, in deinem Fall
> halt in ein Verzeichnis, das von beiden Servern gemountet wird.
Bloß nicht! Zum einen baut man sich so einen single-point-of-failure.
Zum anderen sind Netzwerk-Filesysteme ein ganz trauriges Kapitel wenn
es um Performance und/oder Sicherheit geht.
Eine IMHO unschlagbare Methode zur Synchronisierung von internem
(Test-)Server und dem(den) öffentlichen Webserver(n) ist rsync über
ssh. Damit überträgt man nicht mehr Daten als nötig und für die
Sicherheit ist auch gesorgt.
Wenn man - aus welchen obskuren Gründen auch immer - BLOB Content in
der Datenbank halten will, sollte man mal über folgendes nachdenken:
http://mysqldump.azundris.com/archives/59-Statification.html
XL