PHP readfile/fgets/fread вызывает несколько запросов к серверу

Я пытаюсь передавать файлы MP4 через Apache/Nginx, используя прокси-сервер PHP для аутентификации. Я реализовал диапазоны байтов для потоковой передачи для iOS, как описано здесь: http://mobiforge.com/developing/story/content-delivery-mobile-devices. Это отлично работает в Chrome и Safari, но... действительно странно то, что если я отслеживаю запросы сервера к php-странице, три из них происходят при загрузке страницы в браузере. Вот снимок экрана инспектора Chrome (прямо на странице прокси-сервера PHP):

Инспектор Chrome

Как видите, первый отменяется, второй остается в ожидании, а третий работает. Опять же, файл воспроизводится в браузере. Я пробовал альтернативные методы чтения файла (readfile, fgets, fread и т. д.) с теми же результатами. Что вызывает эти три запроса и как я могу получить один рабочий запрос?


person DeweyOx    schedule 04.10.2012    source источник


Ответы (2)


Первый запрос относится к первому диапазону байтов, предварительно загружая файл. Браузер отменяет запрос после загрузки указанной суммы.

На счет второго не уверен...

Третий — когда вы действительно начинаете воспроизводить медиафайл, он запрашивает и загружает его полностью.

person Niet the Dark Absol    schedule 05.10.2012
comment
Хммм. Таким образом, нет никакого способа уменьшить количество запросов до одного. Интересно. Спасибо за информацию. - person DeweyOx; 06.10.2012

Не уверен, отвечает ли это на ваш вопрос, но обслуживание больших двоичных файлов с помощью PHP - неправильная вещь.

Лучше позволить PHP обрабатывать только аутентификацию и передавать ссылку на файл на веб-сервер для обслуживания, освобождая ресурсы.

См. также: Кэширование ответов HTTP, когда они динамически создаются PHP

Там более подробно описано, что я бы порекомендовал сделать.

person Ja͢ck    schedule 05.10.2012
comment
Меня интересует этот подход, однако знаете ли вы, будет ли он работать с потоковой передачей файла? То есть будет ли он поддерживать HTTP_RANGE / HTTP/1.1 206 Partial Content, чтобы пользователи могли искать конкретную точку в контенте? - person DeweyOx; 06.10.2012