Frage

Ich habe eine Website, die MP3s in einem Flash-Player abspielt.Wenn ein Benutzer auf „Abspielen“ klickt, lädt der Flash-Player automatisch eine MP3 herunter und beginnt mit der Wiedergabe.

Gibt es eine einfache Möglichkeit zu verfolgen, wie oft ein bestimmter Songclip (oder eine beliebige Binärdatei) heruntergeladen wurde?


Ist der Link zum Play ein Link zur tatsächlichen MP3 -Datei oder zu einem JavaScript -Code, der einen Player auftaucht?

Wenn letzteres, können Sie dort problemlos Ihren eigenen Protokollierungscode hinzufügen, um die Anzahl der Treffer zu verfolgen.

Wenn er erstere ist, benötigen Sie etwas, das das Webserverprotokoll selbst verfolgen und diese Unterscheidung treffen kann.Mein Hosting -Plan wird mit Webalizer geliefert, was dies gut macht.

Es ist ein Javascript-Code, der das beantwortet.

Es wäre jedoch schön zu wissen, wie man Downloads mit der anderen Methode verfolgen kann (ohne den Host zu wechseln).

War es hilfreich?

Lösung

Das Lustige ist, dass ich vor 2 Tagen eine PHP-Mediengalerie für meine gesamte Musik geschrieben habe.Ich hatte ein ähnliches Problem.Ich benutze http://musicplayer.sourceforge.net/ für den Spieler.Und die Playlist wird über PHP erstellt.Für alle Musikanfragen gibt es ein Skript namens xfer.php?file=WHATEVER

$filename = base64_url_decode($_REQUEST['file']);
header("Cache-Control: public");
header('Content-disposition: attachment; filename='.basename($filename));
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));

//  Put either file counting code here. either a db or static files

//

readfile($filename);  //and spit the user the file


function base64_url_decode($input) {
    return base64_decode(strtr($input, '-_,', '+/='));
}

Und wenn Sie Dateien aufrufen, verwenden Sie etwas wie:

function base64_url_encode($input) {
     return strtr(base64_encode($input), '+/=', '-_,');
}

http://us.php.net/manual/en/function.base64-encode.php

Wenn Sie Javascript oder einen Flash-Player (z. B. JW-Player) verwenden, der erfordert, dass der eigentliche Link eine MP3-Datei oder was auch immer ist, können Sie den Text „&type=.mp3“ anhängen, sodass der endgültige Link etwa so aussieht:„www.example.com/xfer.php?file=34842ffjfjxfh&type=.mp3“.Auf diese Weise sieht es so aus, als würde es mit einer MP3-Erweiterung enden, ohne dass sich dies auf den Dateilink auswirkt.

Andere Tipps

Verwenden Sie Ihre httpd-Protokolldateien.Installieren http://awstats.sourceforge.net/

Verwenden Sie Bash:

grep mp3 /var/log/httpd/access_log | wc

Wenn Ihr Song/Ihre Binärdatei von Apache bereitgestellt wurde, können Sie ganz einfach das access_log durchsuchen, um die Anzahl der Downloads herauszufinden.Ein einfaches Post-Logrotate-Skript kann die Protokolle durchsuchen und Ihre Zählstatistiken in einer Datenbank verwalten.Dies hat den Leistungsvorteil, da es sich nicht in Ihrem Live-Anfragecodepfad befindet.Um Ihre Website auf eine große Anzahl von Benutzern zu skalieren, ist es eine gute Idee, unkritische Dinge wie Statistiken offline zu erledigen.

Sie könnten sogar eine Apache-.htaccess-Direktive einrichten, die *.mp3-Anfragen in den Querystring umwandelt, mit dem Dubayou arbeitet.Dies könnte eine elegante Möglichkeit sein, die direkte Anfrage beizubehalten und dennoch die Protokollfunktion in die Antwort integrieren zu können.

Ist der Play-Link ein Link zur eigentlichen MP3-Datei oder zu einem Javascript-Code, der einen Player öffnet?

Im letzteren Fall können Sie dort ganz einfach Ihren eigenen Protokollierungscode hinzufügen, um die Anzahl der Zugriffe darauf zu verfolgen.

Im ersteren Fall benötigen Sie etwas, das das Webserver-Protokoll selbst verfolgen und diese Unterscheidung treffen kann.Mein Hosting-Plan beinhaltet Webalizer, was dies gut macht.

Gibt es eine Datenbank für Ihre Musikbibliothek?Wenn beim Herunterladen der MP3-Datei ein Servercode ausgeführt wird, können Sie dort zusätzlichen Code hinzufügen, um die Wiedergabeanzahl zu erhöhen.Sie könnten Javascript auch veranlassen, eine zweite Anfrage zu stellen, um die Wiedergabeanzahl zu erhöhen. Dies könnte jedoch dazu führen, dass Personen/Roboter die Anzahl fälschlicherweise erhöhen.

Ich habe früher für eine Internetradio-Website gearbeitet und wir haben separate Tabellen verwendet, um die Zeit zu verfolgen, zu der jedes Lied gespielt wurde.Unsere Streams wurden von einem Perl-Skript mit Icecast betrieben, sodass wir jedes Mal eine Datenbankanforderung auslösten, wenn ein neuer Titel abgespielt wurde.Um dann die Wiedergabeanzahl zu berechnen, würden wir eine Abfrage ausführen, um zu zählen, wie oft die ID eines Songs im Wiedergabeprotokoll enthalten war.

Das Problem, das ich bei Dingen wie AWStats / dem Durchlesen von Webserver-Protokollen hatte, ist, dass große Downloads oft in Datenblöcke innerhalb der Protokolle aufgeteilt werden können.Dies macht es ziemlich schwierig, die genaue Anzahl der Downloads abzugleichen.

Ich würde Google Analytics empfehlen Ereignisverfolgung, da sich dieser einmal pro Klick auf einen Download-Link registriert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top