iTunes Подкаст RSS Отслеживание PHP - Не загружается - PullRequest
1 голос
/ 15 декабря 2011

Я пытаюсь отслеживать загрузки MP3-подкастов в iTunes. Я создал простой сайт codeignitor, который генерирует URL-адреса, такие как:

www.site.com / подкасты / скачать / [ID] .mp3

Сценарий извлекает идентификатор из URL-адреса, проверяет его наличие в БД - получает URL-адрес файлов и затем выполняет следующие действия:

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 01 Jan 2011 01:01:01 GMT"); 
header('Content-type: audio/mpeg');
header('Content-Disposition: attachment; filename=episode'.$id.'.mp3"');
readfile($this->podcast_model->get_strPodcastFileName());   

Если вы нажмете URL-адрес в браузере, он будет работать, и файл начнет загружаться, но при добавлении 1 ссылки в iTunes он начнет говорить «Скачивает 0%», но не загружает?

1, на что нужно обратить внимание, это метод: $ this-> podcast_model-> get_strPodcastFileName () возвращает ссылку HTTP: //, а не ссылку на файл на сервере, также адрес HTTP не на том же сервере как сценарий. Хотя это работает при загрузке файлов через браузер, как я уже говорил выше.

У кого-нибудь есть идеи?

Спасибо Джеймс

1 Ответ

1 голос
/ 16 декабря 2011

Я исправил это, вместо того, чтобы использовать readfile (...) Я просто сделал заголовок 301, перенаправляющий на URL-адрес следующим образом:

header("HTTP/1.1 301 Moved Permanently" ); 
header("Location: http://www.url_to_mp3_file/1.mp3");  

Одно очко для всех, кто пытается это. Я бы посоветовал вам проверить базу данных на предмет предыдущих загрузок за последние X минут (я снова проверяю IP-адрес, URL и метку времени), так как некоторые проигрыватели MP3 / Audio делают несколько запросов для буферизации файла.

Надеюсь, это поможет.

...