▻http://www.web-developpeur-php.com/blog/article/mod-xsendfile-forcer-le-telechargement-avec-apache-php
Forcer le téléchargement d’un fichier est relativement simple en PHP. Il suffit de l’ouvrir, le lire, l’assigner à une variable, prévoir les headers correspondants et enfin envoyer le contenu du fameux fichier. Très pratique pour gérer l’accès de fichiers soumis à autorisation.
Oui... Mais ! D’une part, ce processus est très lent : combien de temps pour que PHP ouvre et renvoie un fichier d’une centaine de Mo ? Beaucoup trop. D’autre part la limite de mémoire allouée à PHP sera très vite atteinte, ou le temps d’execution maximal le se sera avant...
Une alternative est proposée par mod_xsendfile, un module Apache2 (mais des versions compatibles Nginx et lighttpd existent). Le module surveille la présence d’en-têtes X-SENDFILE dans les requêtes http et réagit en envoyant directement le fichier demandé au navigateur sans traitement préalable par PHP ou n’importe quel autre langage (perl, cgi...).