2017-08-07 15 views
0

私がやっていることは、ポッドキャストのダウンロードデータを収集することです。エピソードの.mp3ファイルがリクエストされると、そのファイルをGoogleアナリティクスアカウントにトラッキングします。どのように.htaccessで要求されたファイルを返しますが、PHPスクリプトを実行しますか?

Googleアナリティクスにデータをトラッキングしてから.mp3ファイルを返すPHPスクリプトにリクエストをリダイレクトする方法を示す記事が見つかりました。何らかの理由でこれがSafariとiOSで壊れていますChromeで動作します)。

これは私が.htaccessファイルのために使っていたものです。

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule (.*).(mp3) download.php?file=$1.$2 [R,L] 
</IfModule> 
# END WordPress 

は、だから私は、スクリプトへの道があるかどうか、私の.htaccessファイルが正常にファイルを返すように思ったんだけど、しかし、その後、私のdownload.phpを呼び出しますスクリプトはGoogleアナリティクスのトラッキングを処理しますが、何らかの理由で失敗した場合は、ファイルを聴いている人を妨害しません。

ありがとうございます!

答えて

0

Measurement Protocolを使用してGoogleアナリティクスサーバー側にデータを送信するスクリプトを設定することもできます。おそらくcURLを使用して、適切なヘッダーでファイルを配信してリダイレクトが行われないようにします。

download.php:

<?php 

$filename = $_GET['file']; 

$data = array('v'=>'1', 
       'tid'=>'UA-XXXXX-Y', 
       'cid'=>'555', 
       't'=>'event', 
       'ec'=>'sound' 
       'ea'=>'download' 
       'el'=>$filename); 
$url = 'https://google-analytics.com/collect'; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_exec($ch); 

if(file_exists($filename)) { 
    header('Content-Type: audio/mpeg'); 
    header('Content-Disposition: filename="test.mp3"'); 
    header('Content-length: '.filesize($filename)); 
    header('Cache-Control: no-cache'); 
    header("Content-Transfer-Encoding: chunked"); 

    readfile($filename); 
} else { 
    header("HTTP/1.0 404 Not Found"); 
} 

別の方法としては、cronジョブスクリプトでapacheのアクセスログを解析しようとすることができますが、それは、メモリを消費し、複雑すぎるようです。

編集:私はGAMPコードに追加され、より陽性であることが構文上変更

関連する問題