X-Sendfile / Apache pour envoyer des gros fichiers
mardi 19 mai 2009C’est un fait, les langages interprétés comme PHP, Ruby ou Perl sont moins rapide que les langages compilés (comme C, C++..) ou même semi-interprétés (comme Java). Outre cela, dans n’importe quel serveur web qui utilise des programmes externes à lui même pour rendre un contenu, il y a des pertes du à la communication entre ces programmes. Dans le cas de l’envoie de gros fichiers par PHP, les pertes deviennent non négligeable, il y a encore plus de données à communiquer à Apache qui sert ici d’intermédiaire, on peut donc remarquer qu’il est plus long de télécharger un fichier envoyé via PHP qu’un fichier directement rendu par Apache (après bien sur ça dépends de la charge de votre serveur).
Le module Apache X-Sendfile permet de dire à Apache quel fichier envoyer, après l’exécution d’un script (PHP par exemple). Vous pourrez ainsi exécuter tranquillement votre script PHP, et si un fichier doit être envoyé, vous le direz à Apache qui s’en chargera. Durant toutes la durée du transfert c’est Apache qui gèrera les données et non plus le couple Apache + PHP. On gagne ainsi en temps processeur, en mémoire, et en gestion puisque Apache prend en compte des entêtes qu’il n’est pas évident de traiter.
Lire la suite