87

Flash Player で mp3 を再生する Web サイトがあります。ユーザーが「再生」をクリックすると、Flash Player が自動的に mp3 をダウンロードして再生を開始します。

特定の曲クリップ (または任意のバイナリ ファイル) がダウンロードされた回数を追跡する簡単な方法はありますか?


再生リンクは、実際の mp3 ファイルへのリンクですか、それともプレーヤーをポップアップする JavaScript コードへのリンクですか?

後者の場合は、そこに独自のログ コードを簡単に追加して、ヒット数を追跡​​できます。

前者の場合は、Web サーバーのログ自体を追跡して区別できるものが必要になります。私のホスティング プランには Webalizer が付属しており、これがうまく機能します。

これはJavaScriptコードなので、それに答えます。

ただし、別の方法 (ホストを切り替えずに) を使用してダウンロードを追跡する方法を知っておくとよいでしょう。

4

8 に答える 8

42

面白いことに、私は 2 日前にすべての音楽用の 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 やフラッシュ プレーヤー (JW プレーヤーなど) を使用している場合は、「&type=.mp3」というテキストを追加して、最終的なリンクが「www. example.com/xfer.php?file=34842ffjfjxfh&type=.mp3". そうすれば、ファイル リンクに影響を与えることなく、mp3 拡張子で終わるように見えます。

于 2008-08-01T17:33:58.750 に答える
30

httpd ログ ファイルを使用します。http://awstats.sourceforge.net/をインストールします

于 2008-08-01T17:51:55.407 に答える
26

バッシュを使用:

grep mp3 /var/log/httpd/access_log | wc
于 2009-10-02T02:12:55.877 に答える
14

曲/バイナリファイルがapacheによって提供された場合は、access_logを簡単にgrepして、ダウンロード数を確認できます。単純なログローテーション後のスクリプトでログをgrepし、カウント統計をデータベースに保持できます。これには、ライブリクエストコードパスに含まれないため、パフォーマンス上の利点があります。統計情報などの重要ではないことをオフラインで行うことは、Webサイトを多数のユーザーに拡大することをお勧めします。

于 2008-10-12T09:10:45.970 に答える
13

*.mp3 リクエストを dubayou が使用しているクエリ文字列に変換する Apache .htaccess ディレクティブを設定することもできます。これは、直接のリクエストを維持しながら、ログ機能をレスポンスにスリップストリームできるエレガントな方法かもしれません。

于 2008-08-01T17:42:04.723 に答える
7

再生リンクは、実際の mp3 ファイルへのリンクですか、それともプレーヤーをポップアップする JavaScript コードへのリンクですか?

後者の場合は、そこに独自のログ コードを簡単に追加して、ヒット数を追跡​​できます。

前者の場合は、Web サーバーのログ自体を追跡して区別できるものが必要になります。私のホスティング プランには webalizer が付属しており、これがうまく機能します。

于 2008-08-01T17:24:24.290 に答える
4

あなたの音楽ライブラリのデータベースはありますか?mp3のダウンロード時に実行されるサーバーコードがある場合は、そこにコードを追加して再生回数を増やすことができます。また、JavaScriptに再生カウントをインクリメントする2番目のリクエストを行わせることもできますが、これにより、人/ロボットが誤ってカウントをインクリメントする可能性があります。

私は以前インターネットラジオサイトで働いていましたが、すべての曲が再生された時間を追跡するために別々のテーブルを使用していました。私たちのストリームはicecastを実行するperlスクリプトを利用していたため、新しいトラックの再生が開始されるたびにデータベースリクエストをトリガーしました。次に、再生回数を計算するために、クエリを実行して、曲のIDが再生ログにあった回数をカウントします。

于 2008-09-04T18:44:22.260 に答える
4

AWStats や Web サーバー ログの読み取りなどで私が抱えていた問題は、大量のダウンロードがログ内のデータ チャンクに分割されることが多いことです。これにより、正確なダウンロード数の調整が非常に難しくなります。

ダウンロード リンクのクリックごとに 1 回登録されるため、Google アナリティクスイベント トラッキングをお勧めします。

于 2016-06-09T09:38:50.137 に答える