Cómo hago un seguimiento de las descargas de archivos


Tengo un sitio web que reproduce mp3 en un reproductor flash. Si un usuario hace clic en "reproducir", Flash player descarga automáticamente un mp3 y comienza a reproducirlo.

¿Hay una manera fácil de rastrear cuántas veces se ha descargado un clip de canción en particular (o cualquier archivo binario)?


Es el enlace de reproducción un enlace a la archivo mp3 o a algún código javascript ¿eso hace aparecer a un jugador?

Si este último, puede agregar fácilmente su código de registro propio allí para rastrear el número de visitas.

Si el primero, necesitarás algo que puede rastrear el registro del servidor web y hacer esa distinción. Mi el plan de hosting viene con webalizer, lo que hace esto muy bien.

Es código javascript, así que eso responde.

Sin embargo, sería bueno saber cómo rastrear las descargas usando el otro método (sin cambiar de hosts).

Author: Lakmal Vithanage, 2008-08-01

8 answers

Lo gracioso es que escribí una galería de medios php para toda mi música hace 2 días. Tuve un problema similar. Estoy usando http://musicplayer.sourceforge.net/ para el jugador. Y la lista de reproducción se construye a través de php. Toda la petición de música ir allí un script llamado 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, '-_,', '+/='));
}

Y cuando llame a archivos use algo como:

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

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

Si está utilizando algún javascript o un reproductor flash (JW reproductor, por ejemplo) que requiere que el enlace real sea un archivo mp3 o lo que sea, puede agregar el texto "& type=. mp3 " para que el linke final se convierta en algo como: "www.example.com/xfer.php?file=34842ffjfjxfh&type=.mp3". De esa manera parece que termina con una extensión mp3 sin afectar el enlace del archivo.

 37
Author: w-ll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-11 12:10:46

Utilice sus archivos de registro httpd. Instalar http://awstats.sourceforge.net/

 28
Author: Tim Boland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-07 01:43:59

Use bash:

grep mp3 /var/log/httpd/access_log | wc
 21
Author: randy melder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-02 02:12:55

Incluso podrías configurar un Apache .directiva htaccess que convierte las solicitudes*. mp3 en la cadena de consultas con la que está trabajando dubayou. Podría ser una forma elegante de mantener la solicitud directa y aún así ser capaz de la función de registro de torbellino en la respuesta.

 12
Author: saint_groceon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-01 17:42:04

Si su canción / archivo binario fue servido por apache, puede fácilmente grep el access_log para averiguar el número de descargas. Un simple script post-logrotate puede grep los registros y mantener sus estadísticas de conteo en una base de datos. Esto tiene la ventaja de rendimiento al no estar en la ruta del código de solicitud en vivo. Hacer cosas no críticas como estadísticas fuera de línea es una buena idea para escalar su sitio web a un gran número de usuarios.

 12
Author: Vinay Y S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-12 09:10:45

¿El enlace de reproducción es un enlace al archivo mp3 real o a algún código javascript que aparezca en un reproductor?

Si es el último, puede agregar fácilmente su propio código de registro para rastrear el número de visitas.

Si es el primero, necesitará algo que pueda rastrear el registro del servidor web y hacer esa distinción. Mi plan de alojamiento viene con webalizer, que hace esto muy bien.

 7
Author: Dillie-O,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-01 17:24:24

¿ Hay una base de datos para tu biblioteca de música? Si hay algún código de servidor que se ejecuta al descargar el mp3, puede agregar código adicional allí para aumentar el recuento de reproducción. También podría hacer que javascript haga una segunda solicitud para incrementar el recuento de reproducción, pero esto podría llevar a que las personas/robots incrementen falsamente los recuentos.

Solía trabajar para un sitio de radio por Internet y usábamos mesas separadas para rastrear la hora en que se tocaba cada canción. Nuestras transmisiones fueron impulsadas por un script de perl que se ejecuta icecast, así que activamos una solicitud de base de datos cada vez que una nueva pista comenzaba a reproducirse. Luego, para calcular el recuento de reproducción, ejecutaríamos una consulta para contar cuántas veces estaba el id de una canción en el registro de reproducción.

 3
Author: Mike H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-04 18:44:22

El problema que tuve con cosas como AWStats / lectura a través de los registros del servidor web es que las descargas grandes a menudo se pueden dividir en trozos de datos dentro de los registros. Esto hace que conciliar el número exacto de descargas sea bastante difícil.

Sugeriría el Seguimiento de eventos de Google Analytics , ya que se registrará una vez por clic en un enlace de descarga.

 3
Author: icc97,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-09 09:38:50