Vă mulțumim pentru susținere

Cum pot urmări descărcările de fișiere

Am un site care joacă mp3-uri într-un flash player. Dacă un utilizator dă clic pe "redare", playerul flash descarcă automat un mp3 și începe să îl joace.

Există o modalitate ușoară de a urmări de câte ori a fost descărcat un clip muzical (sau orice fișier binar)?


Linkul de redare este un link către actual   mp3 sau la un cod javascript   care afișează un jucător?

     

Dacă acesta din urmă vă poate adăuga cu ușurință   propriul cod de logare acolo pentru a urmări   numărul de clicuri la el.

     

Dacă prima, veți avea nevoie de ceva   care poate urmări jurnalul serverului web   și să facă această distincție. Mele   planul de găzduire vine cu webalizer,   care face acest lucru frumos.

Este codul javascript, astfel încât să răspundă la asta.

Cu toate acestea, ar fi frumos să știți cum să urmăriți descărcările folosind metoda de altă natură (fără a trece gazdele).

0
adăugat editat

8 răspunsuri

Ați putea chiar să creați o directivă Apache .htaccess care să convertească cererile * .mp3 în interogarea de interogare dubayou cu care lucrați. Ar putea fi o modalitate elegantă de a păstra cererea directă și de a putea încă să alunecă funcția jurnalului în răspuns.

0
adăugat

Linkul de redare este un link către fișierul mp3 real sau la un cod javascript care afișează un jucător?

Dacă acesta din urmă, puteți adăuga cu ușurință propriul cod de înregistrare acolo pentru a urmări numărul de hit-uri către el.

În cazul în care primul, veți avea nevoie de ceva care să poată urmări jurnalul serverului web în sine și să facă această distincție. Planul meu de găzduire vine cu webalizer, care face acest lucru frumos.

0
adăugat

Lucrul amuzant este că am scris o galerie media php pentru toată muzica mea acum 2 zile. Am avut o problemă similară. Folosesc http://musicplayer.sourceforge.net/ pentru player. Și playlistul este construit prin php. Toate cererile de muzică au un script numit 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, '-_,', '+/='));
}

Iar când suni fișiere, folosește ceva de genul:

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

http://us.php.net/manual/en/function. base64-encode.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
adăugat
@anarchOi: Cel mai simplu mod ar fi să compare parametrul GET ( $ _ CERERE [ 'fisier'] ) împotriva o listă albă de nume de fișiere cunoscute bune. De exemplu, o listă a tuturor fișierelor din directorul în care stocați fișierele. Asigurați-vă că utilizați numai acel director pentru stocarea fișierelor pe care doriți să le descărcați ...
adăugat autor BlueRaja - Danny Pflughoeft
@tmsimont, Ați descoperit vreo modalitate de reducere a consumului de memorie?
adăugat autor ezpresso
acest lucru va arunca în aer limitele de memorie ale serverului dacă fișierele sunt prea mari și traficul este mare .. ceva ce m-am experimentat eu.
adăugat autor tmsimont
@respresso ya verificați link-urile pe care le-am pus pe această întrebare: stackoverflow.com/questions/6627952/… (de asemenea, un fel de amuzant că i-ar răspunde la un răspuns la ceva am postat acum 6 ani haha
adăugat autor tmsimont
există o vulnerabilitate de traversare a directorului în acest script! Un atacator poate trece în fișierul xfer.php = .. / .. / .. / passwd sau orice altceva vrea! Ai grija!!!
adăugat autor Alex Weinstein
cum de a repara "vulnerabilitatea traversal director"?
adăugat autor anarchOi

Problema pe care am avut-o cu lucruri precum AWStats / lectură prin jurnalele serverului web este că descărcările mari pot fi adesea împărțite în bucăți de date din jurnale. Aceasta face ca reconcilierea numărului exact de descărcări să fie destul de greu.

Aș sugera Urmărirea evenimentelor Google Analytics, deoarece aceasta se va înregistra o dată pe clic pe un link de descărcare.

0
adăugat

Utilizați bash:

grep mp3 /var/log/httpd/access_log | wc
0
adăugat

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

0
adăugat

Există o bază de date pentru biblioteca muzicală? Dacă există un cod de server care rulează la descărcarea mp3-ului, atunci puteți adăuga un cod suplimentar pentru a crește numărul de redare. Ați putea, de asemenea, să aveți javascript să faceți oa doua solicitare de sporire a numărului de jucători, dar acest lucru ar putea duce la creșterea numărului de persoane / roboți.

Am lucrat pentru un site de radio pe internet și am folosit tabele separate pentru a urmări momentul în care fiecare piesă a fost redată. Fluxurile noastre au fost alimentate de un script Perl care rulează icecast, așa că am declanșat o cerere de bază de date de fiecare dată când începe o nouă melodie. Apoi, pentru a calcula numărul de melodii, vom rula o interogare pentru a numă de câte ori un id de melodie a fost în jurnalul de redare.

0
adăugat

Dacă fișierul dvs. cântec / binar a fost difuzat de apache, puteți greva cu ușurință accesul_log pentru a afla numărul de descărcări. Un simplu script post-logrotate poate grapa jurnalele și să vă mențină statisticile conte în db. Acest lucru are avantajul de performanță prin faptul că nu vă aflați în calea codului de solicitare live. Efectuarea de lucruri non-critice, cum ar fi statisticile offline, este o idee bună de a scala site-ul dvs. la un număr mare de utilizatori.

0
adăugat