Comment suivre les téléchargements de fichiers

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

Existe-t-il un moyen facile de savoir combien de fois un clip musical particulier (ou un fichier binaire) a été téléchargé?


Le lien de lecture est-il un lien vers le réel   fichier mp3 ou à un code javascript   qui ouvre un joueur?

     

Si ce dernier, vous pouvez facilement ajouter votre   propre code de journalisation là-bas pour suivre la   nombre de hits à cela.

     

Si le premier, vous aurez besoin de quelque chose   qui peut suivre le journal du serveur Web   lui-même et faire cette distinction. ma   plan d'hébergement est livré avec webalizer,   qui le fait bien.

C'est du code javascript, donc ça répond.

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

0
ajouté édité
Vues: 3

8 Réponses

Vous pouvez même configurer une directive Apache .htaccess qui convertit les requêtes * .mp3 en querystring avec laquelle vous travaillez. Ce pourrait être une manière élégante de garder la demande directe tout en étant capable d'intégrer la fonction de journal dans la réponse.

0
ajouté

Le lien de lecture est-il un lien vers le fichier mp3 actuel ou vers un code JavaScript qui ouvre un lecteur?

Si ce dernier, vous pouvez facilement ajouter votre propre code de journalisation là-bas pour suivre le nombre de visites.

Si le premier, vous aurez besoin de quelque chose qui peut suivre le journal du serveur Web lui-même et faire cette distinction. Mon plan d'hébergement est livré avec webalizer, qui le fait bien.

0
ajouté

La chose amusante est que j'ai écrit une galerie PHP media pour toute ma musique il y a 2 jours. J'avais un problème similaire. J'utilise http://musicplayer.sourceforge.net/ pour le joueur. Et la playlist est construite via php. Toutes les demandes de musique y vont 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 quand vous appelez des fichiers, utilisez quelque chose comme:

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

http://us.php.net/manual/fr/fonction. base64-encoder.php

If you are using some JavaScript or a flash player (JW player for example) that requires the actual link to be an mp3 file or whatever, you can append the text "&type=.mp3" so the final linke becomes something like: "www.example.com/xfer.php?file=34842ffjfjxfh&type=.mp3". That way it looks like it ends with an mp3 extension without affecting the file link.

0
ajouté
@anarchOi: Le plus simple serait de comparer le paramètre GET ( $ _ REQUEST ['file'] ) avec une liste blanche de noms de fichiers connus. Par exemple, une liste de tous les fichiers dans le répertoire que vous stockez vos fichiers. Assurez-vous que seulement utilisez ce répertoire pour stocker les fichiers que vous voulez télécharger ...
ajouté l'auteur BlueRaja - Danny Pflughoeft, source
@tmsimont, Avez-vous trouvé des moyens de réduire la consommation de mémoire?
ajouté l'auteur ezpresso, source
Cela fera exploser les limites de la mémoire du serveur si les fichiers sont trop gros et votre trafic est élevé .. quelque chose que j'ai moi-même vécu.
ajouté l'auteur tmsimont, source
@ezpresso ya vérifier les liens que j'ai mis sur cette question: PHP mémoire "> stackoverflow.com/questions/6627952/… (aussi un peu drôle que je répondrais à une réponse à quelque chose que j'ai posté il y a 6 ans haha
ajouté l'auteur tmsimont, source
il y a une vulnérabilité de traversée de répertoire dans ce script! Un attaquant peut faire passer xfer.php? File = .. / .. / .. / passwd ou tout ce qu'il veut! Faites attention!!!
ajouté l'auteur Alex Weinstein, source
Comment réparer les "directory traversal vulnerability"?
ajouté l'auteur anarchOi, source

Le problème que j'ai eu avec des choses comme AWStats / lire des journaux de serveur Web est que les grands téléchargements peuvent souvent être divisés en morceaux de données dans les journaux. Cela rend très difficile le rapprochement du nombre exact de téléchargements.

Je suggère le suivi des événements de Google Analytics car celui-ci sera enregistré une fois par clic sur un lien de téléchargement.

0
ajouté

Utilisez bash:

grep mp3 /var/log/httpd/access_log | wc
0
ajouté

Use your httpd log files. Install http://awstats.sourceforge.net/

0
ajouté

Y a-t-il une base de données pour votre bibliothèque musicale? S'il y a un code de serveur qui s'exécute lors du téléchargement du mp3, vous pouvez ajouter du code supplémentaire pour augmenter le nombre de lectures. Vous pouvez également demander à JavaScript de faire une seconde requête pour incrémenter le nombre de parties jouées, mais cela pourrait amener les personnes / robots à incrémenter faussement le compte.

J'avais l'habitude de travailler pour un site de radio sur Internet et nous avons utilisé des tables séparées pour suivre l'heure à laquelle chaque chanson a été 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 combien de fois l'identifiant d'une chanson était dans le journal de jeu.

0
ajouté

Si votre fichier binaire / chanson a été servi par apache, vous pouvez facilement grep le journal access_log pour connaître le nombre de téléchargements. Un simple script post-logrotate peut grep les logs et maintenir vos statistiques de compte dans un db. Cela a l'avantage de performance en n'étant pas dans votre chemin de code de demande en direct. Faire des choses non-critiques comme les statistiques hors-ligne est une bonne idée pour faire évoluer votre site web vers un grand nombre d'utilisateurs.

0
ajouté