Archivo de lectura PHP () y archivos grandes

Cuando se usa readfile () - usando PHP en Apache - el archivo se lee inmediatamente en el búfer de salida de Apache y se completa la ejecución del script PHP, o la ejecución del script PHP espera hasta que el cliente finalice la descarga del archivo (o el servidor agote el tiempo de espera) lo que ocurra primero)?

La historia de fondo más larga:

Tengo un sitio web con muchos archivos mp3 grandes (sermones para una iglesia local). No todos los archivos en el archivo de audio pueden descargarse, por lo que la ruta /sermon/{filename}.mp3 se reescribe para ejecutar realmente /sermon.php?filename={filename} y, si se permite que el archivo se descargue, el tipo de contenido se establece en "audio / mpeg" y el archivo se transmite mediante el uso de readfile (). He recibido quejas (casi exclusivamente de usuarios de iPhone que están transmitiendo las descargas a través de 3G) de que los archivos no se descargan completamente o que se cortan después de 10 o 15 minutos. Cuando pasé de transmitir el archivo con un archivo de lectura () a simplemente redirigir al archivo - encabezado ("Ubicación: $ archivo_url"); - todas las quejas desaparecieron (incluso verifiqué con algunos usuarios que podían reproducir el problema de forma confiable previamente).

Esto me lleva a sospechar que al usar readfile () el motor de script PHP está en uso hasta que el archivo se descargue por completo, pero no puedo encontrar ninguna referencia que confirme o niegue esta teoría. Admito que estoy más en casa en el mundo de ASP.NET y el equivalente de dotNet de readfile () inserta todo el archivo en el búfer de salida de IIS inmediatamente, de modo que el proceso de ejecución de ASP.NET se pueda completar independientemente de la entrega del archivo. para el cliente final ... ¿existe un equivalente a este comportamiento con PHP + Apache?

Respuestas a la pregunta(7)

Su respuesta a la pregunta