servidor para directorio desde descargar con codigo boton automaticamente atributo archivos archivo ajeno php apache logging download analytics

php - para - html boton descargar archivo



¿Cómo hago un seguimiento de las descargas de archivos? (8)

Tengo un sitio web que reproduce mp3 en un reproductor flash. Si un usuario hace clic en "reproducir", el reproductor flash 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)?

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

Si es lo último, puede agregar fácilmente su propio código de registro para rastrear la cantidad de visitas.

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

Es un código JavaScript que responde eso.

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


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

Si es lo último, puede agregar fácilmente su propio código de registro para rastrear la cantidad de visitas.

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


¿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 puede hacer que JavaScript haga una segunda solicitud para aumentar el recuento de juegos, 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 utilizamos tablas separadas para rastrear el tiempo que se reproducía cada canción. Nuestras transmisiones fueron impulsadas por un script perl que ejecuta icecast, por lo que activamos una solicitud de base de datos cada vez que una nueva pista comenzó a reproducirse. Luego, para calcular el recuento de reproducción, ejecutaremos una consulta para contar cuántas veces la identificación de una canción estaba en el registro de reproducción.


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 fragmentos de datos dentro de los registros. Esto hace que la conciliación del número exacto de descargas sea bastante difícil.

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


Incluso podría configurar una directiva .htaccess de Apache que convierta las solicitudes * .mp3 en la cadena de consulta con la que está trabajando dubayou. Puede ser una forma elegante de mantener la solicitud directa y aún así poder incorporar la función de registro en la respuesta.


Lo curioso 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 crea a través de php. Todas las solicitudes de música van 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 JavaScript o un reproductor flash (reproductor JW, 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 enlace 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.


Si su canción / archivo binario fue servido por apache, puede acceder fácilmente al acceso_log para averiguar la cantidad 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 su ruta de 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 una gran cantidad de usuarios.


Usa bash:

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