Jak śledzić pobieranie plików

Mam stronę, która odtwarza MP3 w flash playerze. Jeśli użytkownik kliknie "Odtwórz", flash player automatycznie pobiera plik mp3 i zaczyna go odtwarzać.

Czy istnieje łatwy sposób na śledzenie, ile razy dany klip z piosenką (lub dowolny plik binarny) został pobrany?


Czy play link jest linkiem do aktualnego plik mp3 lub do jakiegoś kodu javascript to wyskakuje z odtwarzacza?

Jeśli to drugie, możesz łatwo dodać swój własny kod logowania do śledzenia na liczba wyświetleń.

Jeśli to pierwsze, będziesz potrzebował czegoś które mogą śledzić dziennik serwera www siebie i dokonać tego rozróżnienia. My hosting plan pochodzi z webalizer, co robi to ładnie.

To kod javascript, więc na to odpowiada.

Byłoby jednak miło wiedzieć, jak śledzić pliki do pobrania za pomocą innej metody (bez przełączania hostów).

Author: Lakmal Vithanage, 2008-08-01

8 answers

Zabawne jest to, że napisałem php media gallery dla całej mojej muzyki 2 dni temu. Miałem podobny problem. Używam http://musicplayer.sourceforge.net / dla gracza. A playlisty są budowane przez php. Wszystkie prośby o muzykę idź tam skrypt o nazwie 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, '-_,', '+/='));
}

A gdy wywołujesz pliki użyj czegoś w stylu:

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

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

Jeśli używasz javascript lub flash player (JW Odtwarzacz na przykład), który wymaga, aby rzeczywisty link był plikiem mp3 lub czymkolwiek, możesz dołączyć tekst "& type=. mp3", aby końcowy linke stał się czymś w rodzaju: "www.example.com/xfer.php?file=34842ffjfjxfh&type=.mp3". w ten sposób wygląda na to, że kończy się rozszerzeniem mp3 bez wpływu na link do pliku.

 37
Author: w-ll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-11 12:10:46

Użyj plików dziennika httpd. Install http://awstats.sourceforge.net/

 28
Author: Tim Boland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-07 01:43:59

Użyj bash:

grep mp3 /var/log/httpd/access_log | wc
 21
Author: randy melder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-02 02:12:55

Można nawet założyć Apache .dyrektywa htaccess, która konwertuje żądania*. mp3 na zapytanie. Może to być elegancki sposób, aby zachować bezpośrednie żądanie i nadal być w stanie slipstream funkcji dziennika do odpowiedzi.

 12
Author: saint_groceon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-01 17:42:04

Jeśli twój utwór / plik binarny był obsługiwany przez apache, możesz łatwo grep access_log, aby dowiedzieć się, ile pobrań. Prosty skrypt post-logrotate może grep dzienniki i utrzymać statystyki licznika w db. Ma to przewagę wydajności, ponieważ nie znajduje się w ścieżce aktywnego kodu żądania. Robienie nieistotnych rzeczy, takich jak statystyki w trybie offline, to dobry pomysł na skalowanie witryny do dużej liczby użytkowników.

 12
Author: Vinay Y S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-12 09:10:45

Czy play link to link do pliku mp3 czy do jakiegoś kodu javascript, który wyskakuje z odtwarzacza?

Jeśli to ostatnie, możesz łatwo dodać tam swój własny kod logowania, aby śledzić liczbę wejść do niego.

Jeśli to pierwsze, będziesz potrzebował czegoś, co może śledzić sam dziennik serwera WWW i dokonać tego rozróżnienia. Mój plan hostingowy jest wyposażony w webalizer, który robi to ładnie.

 7
Author: Dillie-O,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-01 17:24:24

Czy istnieje baza danych dla Twojej biblioteki muzycznej? Jeśli jest jakiś kod serwera, który działa podczas pobierania mp3, możesz dodać tam dodatkowy kod, aby zwiększyć liczbę odtwarzania. Można również mieć javascript zrobić drugi wniosek, aby zwiększyć liczbę odtwarzania, ale może to prowadzić do ludzi / robotów fałszywie zwiększenie liczby.

Kiedyś pracowałem dla radia internetowego i używaliśmy osobnych tabel, aby śledzić czas odtwarzania każdej piosenki. Nasze strumienie były zasilane skryptem Perla działającym icecast, więc uruchamialiśmy żądanie bazy danych za każdym razem, gdy nowy utwór zaczął grać. Następnie, aby obliczyć liczbę odtwarzania, uruchamiamy zapytanie, aby policzyć, ile razy identyfikator utworu był w dzienniku odtwarzania.

 3
Author: Mike H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-04 18:44:22

Problem, jaki miałem z takimi rzeczami jak AWStats / czytanie dzienników serwera www, polega na tym,że duże pliki do pobrania często można podzielić na kawałki danych w dziennikach. To sprawia, że pogodzenie dokładnej liczby pobrań jest dość trudne.

Sugerowałbym Google Analytics śledzenie zdarzeń , ponieważ będzie to rejestrowane raz na kliknięcie w link do pobrania.

 3
Author: icc97,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-09 09:38:50