PHP readfile () и большие файлы

При использовании readfile () - при использовании PHP на Apache - файл сразу считывается в выходной буфер Apache и выполнение сценария PHP завершается, или выполнение сценария PHP ожидает, пока клиент не завершит загрузку файла (или время сервера) вне зависимости от того, что произойдет первым)?

Более длинная история

У меня есть веб-сайт с большим количеством mp3-файлов (проповеди для местной церкви). Не все файлы в аудиоархиве могут быть загружены, поэтому путь /sermon/ndomfilename‹.mp3 переписывается для реального выполнения /sermon.php?filename= enjfilename}, и если файл разрешен для загрузки, тогда тип контента установлен как «аудио / mpeg»; и файл перетек с использованием readfile (). Я получаю жалобы (почти исключительно от пользователей iPhone, которые транслируют загрузки через 3G) на то, что файлы загружаются не полностью или что они отключаются примерно через 10 или 15 минут. Когда я переключился с потоковой передачи файла с помощью readfile () на простое перенаправление на заголовок файла (& quot; Расположение: $ file_url & quot;); - все жалобы исчезли (я даже проверил несколько пользователей, которые ранее могли достоверно воспроизвести проблему по требованию).

Это заставляет меня подозревать, что при использовании readfile () механизм сценариев PHP используется до тех пор, пока файл не будет полностью загружен, но я не могу найти никаких ссылок, которые подтверждают или опровергают эту теорию. Я признаю, что я больше дома в мире ASP.NET, и эквивалент readfile () для dotNet немедленно помещает весь файл в выходной буфер IIS, чтобы конвейер выполнения ASP.NET мог завершиться независимо от доставки файла. до конечного клиента ... есть ли эквивалент этого поведения с PHP + Apache?

Ответы на вопрос(7)

Ваш ответ на вопрос