¿Cómo detectar la compatibilidad con X-Accel-Redirect (Nginx) / X-Sendfile (Apache) en PHP?

Acerca de la Aplicación

Estoy trabajando en una aplicación de comercio electrónico en PHP. Para mantener la URL segura, los enlaces de descarga de productos se mantienen detrás de PHP. Hay un archivo, digamos download.php, que acepta algunos parámetros a través de GET y los verifica en una base de datos. Si todo va bien, sirve archivos usando la función readfile () en PHP.

Sobre el Problema

Ahora el problema surge cuando el archivo que se pasa a readfile () es mayor que el límite de memoria establecido en php.ini Como esta aplicación será utilizada por muchos usuarios en hosting compartido, no podemos transmitir la alteración de la configuración de php.ini.

En nuestro esfuerzo por encontrar soluciones, primero pensé que podíamos hacer llamadas fread () en el ciclo while, pero parece que impondrá problemas, así como se destaca aquí.Descargar archivos grandes de manera confiable en PHP

Entonces, mi mejor opción es detectar / verificar si el servidor admite X-Accel-Redirect (en el caso de Nginx) / X-Sendfile (en el caso de Apache)

Si el servidor es compatible con X-Accel-Redirect / X-Sendfile, puedo usarlos y, en otro bloque, puedo informar al administrador del sistema sobre el límite de memoria impuesto por php.ini

Idealmente, quiero usar el soporte del lado del servidor como X-Accel-Redirect / X-Sendfile siempre que sea posible, y si eso no funciona, me gustaría tener un código de respaldo para leer archivos sin readfile ().

Todavía no estoy seguro de cómo readfile () y fread () en while loop son diferentes, pero parece que while loop creará un problema, nuevamente, como se sugiere enDescargar archivos grandes de manera confiable en PHP

Espero obtener ayuda, sugerencias, códigos, orientación.

Gracias por leer.

Respuestas a la pregunta(3)

Su respuesta a la pregunta