Como posso controlar downloads de arquivos

votos
66

Eu tenho um site que reproduz MP3 em um flash player. Se um usuário clica 'play' o flash player transfere automaticamente um mp3 e começa jogando.

Existe uma maneira fácil de controlar quantas vezes um clipe de música em particular (ou qualquer arquivo binário) foi baixado?


É o elo jogo um link para o arquivo mp3 real ou algum código javascript que aparece um jogador?

Neste último caso, você pode facilmente adicionar seu próprio código de registro lá para acompanhar o número de acessos a ele.

No primeiro caso, você precisa de algo que pode acompanhar-se de log do servidor web e fazer essa distinção. Meu plano de hospedagem vem com webalizer, que faz isso muito bem.

É código javascript, para que responde a isso.

No entanto, seria bom saber como rastrear downloads usando outro método (sem alternar hosts).

Publicado 01/08/2008 em 18:14
fonte usuário
Em outras línguas...                            


8 respostas

votos
36

O engraçado é que eu escrevi uma galeria de mídia php para todas as minhas músicas 2 dias atrás. Eu tive um problema parecido. Estou usando http://musicplayer.sourceforge.net/ para o jogador. E a lista de reprodução são construídos via php. Todos os pedidos de música ir lá um script chamado 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, '-_,', '+/='));
}

E quando você chamar arquivos usar algo como:

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

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

Se você estiver usando algum JavaScript ou um flash player (jogador JW por exemplo) que exige o link real para ser um arquivo mp3 ou qualquer outra coisa, você pode anexar o texto "& type = .mp3" para que o linke final se torna algo como: "www .example.com / xfer.php? file = 34842ffjfjxfh & type = .mp3" . Dessa forma, parece que ele termina com uma extensão mp3 sem afetar o link do arquivo.

Respondeu 01/08/2008 em 18:33
fonte usuário

votos
27

Use seus arquivos de log httpd. instale http://awstats.sourceforge.net/

Respondeu 01/08/2008 em 18:51
fonte usuário

votos
21

Use bash:

grep mp3 /var/log/httpd/access_log | wc
Respondeu 02/10/2009 em 03:12
fonte usuário

votos
12

Se o seu arquivo de música / binário foi servido pelo Apache, você pode facilmente grep o access_log para descobrir o número de downloads. Um script de pós-logrotate simples pode grep os logs e manter suas estatísticas de contagem em um db. Isto tem a vantagem de desempenho por não estar no seu caminho de código solicitação ao vivo. Fazer as coisas não críticos como estatísticas off-line é uma boa idéia para escalar seu site para grande número de usuários.

Respondeu 12/10/2008 em 10:10
fonte usuário

votos
11

Você pode até mesmo configurar uma directiva Apache .htaccess que converte * pedidos .mp3 na querystring dubayou está trabalhando com. Pode ser uma maneira elegante de manter o pedido directo e ainda ser capaz de slipstream função de log na resposta.

Respondeu 01/08/2008 em 18:42
fonte usuário

votos
6

É o elo jogo um link para o arquivo mp3 real ou algum código javascript que aparece um jogador?

Neste último caso, você pode facilmente adicionar seu próprio código de registro lá para acompanhar o número de acessos a ele.

No primeiro caso, você precisa de algo que pode acompanhar-se de log do servidor web e fazer essa distinção. Meu plano de hospedagem vem com webalizer, que faz isso muito bem.

Respondeu 01/08/2008 em 18:24
fonte usuário

votos
3

O problema que tive com coisas como AWStats / leitura através de logs do servidor web é que grandes downloads muitas vezes pode ser dividida em blocos de dados dentro dos logs. Isso faz com que conciliar o número exato de transferências bastante difícil.

Eu sugiro o Google Analytics o acompanhamento de eventos , pois isso irá registrar uma vez por clique em um link para download.

Respondeu 09/06/2016 em 09:38
fonte usuário

votos
3

Existe um banco de dados para a sua biblioteca de música? Se houver qualquer código do servidor que é executado quando o download do mp3, então você pode adicionar código extra lá para incrementar a contagem de jogo. Você também pode ter javascript fazer um segundo pedido para incrementar a contagem de jogo, mas isso poderia levar a pessoas / robôs falsamente incrementando a contagem.

Eu costumava trabalhar para um site de internet de rádio e usamos tabelas separadas para controlar o tempo cada música foi tocada. Nossos fluxos eram movidos por um script Perl rodando icecast, por isso desencadeou uma solicitação de banco de dados cada vez que uma nova pista começou a tocar. Em seguida, para calcular a contagem de reprodução correríamos uma consulta para contar quantas vezes id de uma música foi no log de jogo.

Respondeu 04/09/2008 em 19:44
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more