簡體   English   中英

如何跟蹤文件下載

[英]How do I track file downloads

我有一個在 Flash 播放器中播放 mp3 的網站。 如果用戶單擊“播放”,則 Flash 播放器會自動下載 mp3 並開始播放。

是否有一種簡單的方法可以跟蹤特定歌曲剪輯(或任何二進制文件)的下載次數?


播放鏈接是指向實際 mp3 文件的鏈接還是指向彈出播放器的某些 javascript 代碼的鏈接?

如果是后者,您可以輕松地在其中添加自己的日志記錄代碼來跟蹤點擊次數。

如果是前者,您將需要可以跟蹤 Web 服務器日志本身並進行區分的東西。 我的托管計划帶有 Webalizer,它可以很好地做到這一點。

這是一個 javascript 代碼,因此可以回答這個問題。

但是,如果知道如何使用其他方法(無需切換主機)跟蹤下載,那就太好了。

有趣的是我兩天前為我所有的音樂寫了一個 php 媒體庫。 我有一個類似的問題。 我正在為播放器使用http://musicplayer.sourceforge.net/ 播放列表是通過 php 構建的。 所有音樂請求都轉到名為 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, '-_,', '+/='));
}

當您調用文件時,請使用以下內容:

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

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

如果您正在使用一些需要 mp3 文件的實際鏈接或其他內容的 JavaScript 或 Flash 播放器(例如 JW 播放器),您可以附加文本“&type=.mp3”,以便最終鏈接變為:“www. example.com/xfer.php?file=34842ffjfjxfh&type=.mp3”。 這樣看起來它以 mp3 擴展名結尾,而不會影響文件鏈接。

使用您的 httpd 日志文件。 安裝http://awstats.sourceforge.net/

使用 bash:

grep mp3 /var/log/httpd/access_log | wc

如果您的歌曲/二進制文件是由 apache 提供的,您可以輕松地 grep access_log 以找出下載次數。 一個簡單的 post-logrotate 腳本可以 grep 日志並在 db 中維護您的計數統計信息。 由於不在您的實時請求代碼路徑中,因此具有性能優勢。 離線進行統計等非關鍵操作是將您的網站擴展到大量用戶的好主意。

您甚至可以設置一個 Apache .htaccess 指令,將 *.mp3 請求轉換為 dubayou 正在使用的查詢字符串。 這可能是一種保持直接請求並仍然能夠將日志功能整合到響應中的優雅方式。

播放鏈接是指向實際 mp3 文件的鏈接還是指向彈出播放器的某些 javascript 代碼的鏈接?

如果是后者,您可以輕松地在其中添加自己的日志記錄代碼來跟蹤點擊次數。

如果是前者,您將需要可以跟蹤 Web 服務器日志本身並進行區分的東西。 我的托管計划帶有 webalizer,它可以很好地做到這一點。

我在使用 AWStats/讀取 Web 服務器日志之類的問題時遇到的問題是,大量下載通常可以拆分為日志中的數據塊。 這使得協調下載的確切數量變得非常困難。

我建議使用 Google Analytics Event Tracking ,因為每次點擊下載鏈接都會注冊一次。

你的音樂庫有數據庫嗎? 如果在下載 mp3 時有任何服務器代碼運行,那么您可以在那里添加額外的代碼以增加播放次數。 您也可以讓 javascript 再次請求增加播放次數,但這可能會導致人員/機器人錯誤地增加播放次數。

我曾經在一個互聯網廣播網站工作,我們使用單獨的表格來跟蹤每首歌曲的播放時間。 我們的流由運行 icecast 的 perl 腳本提供支持,因此每次開始播放新曲目時我們都會觸發數據庫請求。 然后為了計算播放次數,我們將運行一個查詢來計算歌曲的 id 在播放日志中出現的次數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM