php - Comment suivre les téléchargements de fichiers

Translate

J'ai un site Web qui lit des mp3 dans un lecteur flash. Si un utilisateur clique sur «lire», le lecteur flash télécharge automatiquement un mp3 et commence à le lire.

Existe-t-il un moyen simple de suivre combien de fois un clip de chanson particulier (ou un fichier binaire) a été téléchargé?


Le lien de lecture est-il un lien vers le fichier mp3 réel ou vers un code javascript qui fait apparaître un lecteur?

Dans ce dernier cas, vous pouvez facilement ajouter votre propre code de connexion pour suivre le nombre de visites.

Dans le premier cas, vous aurez besoin de quelque chose qui puisse suivre le journal du serveur Web lui-même et faire cette distinction. Mon plan d'hébergement est fourni avec Webalizer, ce qui le fait très bien.

C'est un code javascript qui répond à cela.

Cependant, il serait bon de savoir comment suivre les téléchargements en utilisant l'autre méthode (sans changer d'hôtes).

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Le plus drôle, c'est que j'ai écrit une galerie de médias php pour toute ma musique il y a 2 jours. J'avais un problème similaire. j'utilisehttp://musicplayer.sourceforge.net/pour le joueur. Et la playlist est construite via php. Toute demande de musique y va un script appelé 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, '-_,', '+/='));
}

Et lorsque vous appelez des fichiers, utilisez quelque chose comme:

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

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

Si vous utilisez du javascript ou un lecteur flash (lecteur JW par exemple) qui nécessite que le lien réel soit un fichier mp3 ou autre, vous pouvez ajouter le texte "& type = .mp3" pour que le lien final devienne quelque chose comme: "www .example.com / xfer.php? fichier = 34842ffjfjxfh & type = .mp3 ". De cette façon, il semble qu'il se termine par une extension mp3 sans affecter le lien du fichier.

La source
Translate

Utilisez vos fichiers journaux httpd. Installerhttp://awstats.sourceforge.net/

La source
Translate

Utilisez bash:

grep mp3 /var/log/httpd/access_log | wc
La source
Translate

Si votre chanson / fichier binaire a été servi par apache, vous pouvez facilement grep le access_log pour connaître le nombre de téléchargements. Un simple script post-logrotate peut grep les journaux et maintenir vos statistiques de comptage dans une base de données. Cela présente l'avantage de ne pas être dans le chemin du code de votre demande en direct. Faire des choses non critiques comme les statistiques hors ligne est une bonne idée pour adapter votre site Web à un grand nombre d'utilisateurs.

La source
Translate

Vous pouvez même configurer une directive Apache .htaccess qui convertit les requêtes * .mp3 en la chaîne de requêtes avec laquelle dubayou travaille. Cela pourrait être un moyen élégant de conserver la demande directe et de toujours pouvoir intégrer la fonction de journalisation dans la réponse.

La source
Translate

Le lien de lecture est-il un lien vers le fichier mp3 réel ou vers un code javascript qui fait apparaître un lecteur?

Dans ce dernier cas, vous pouvez facilement ajouter votre propre code de connexion pour suivre le nombre de visites.

Dans le premier cas, vous aurez besoin de quelque chose qui puisse suivre le journal du serveur Web lui-même et faire cette distinction. Mon plan d'hébergement est livré avec Webalizer, ce qui le fait très bien.

La source
Translate

Existe-t-il une base de données pour votre bibliothèque musicale? S'il y a un code serveur qui s'exécute lors du téléchargement du mp3, vous pouvez y ajouter un code supplémentaire pour incrémenter le nombre de lectures. Vous pouvez également demander à javascript de faire une deuxième demande pour incrémenter le nombre de lectures, mais cela pourrait conduire à une augmentation erronée du nombre de personnes / robots.

J'avais l'habitude de travailler pour un site de radio Internet et nous utilisions des tableaux séparés pour suivre l'heure à laquelle chaque chanson était jouée. Nos flux étaient alimentés par un script perl exécutant icecast, nous avons donc déclenché une requête de base de données chaque fois qu'une nouvelle piste commençait à jouer. Ensuite, pour calculer le nombre de lectures, nous lancerions une requête pour compter le nombre de fois que l'ID d'une chanson figurait dans le journal de lecture.

La source
Translate

Le problème que j'ai eu avec des éléments comme AWStats / la lecture des journaux du serveur Web est que les gros téléchargements peuvent souvent être divisés en blocs de données dans les journaux. Cela rend la réconciliation du nombre exact de téléchargements assez difficile.

Je suggérerais Google AnalyticsSuivi des événements, car cela s'enregistrera une fois par clic sur un lien de téléchargement.

La source