bonjour
je souhaite lorque quelqu'un appelle un fichier php contenant ce code là :
Code :
- ...
- $size = filesize($path);
- header("Content-type: application/zip" );
- header("Content-Length: $size" );
- header('Content-Disposition: attachment; filename="'.$ini[$_GET['download']]['filename'].'"');
- readfile($path);
- exit();
|
cela lui ouvre une la fenetre de dialogue de son navigateur web pour qu'il puisse telecharger un fichier.
cela marche parfaitement!
mais ce que je voudrais comprendre c'est pourquoi
cest readfile() qui va renvoyer le contenu binaire du fichier a envoyer au serveur http qui lui va l'envoyer au client une fois l'interpretation du code php terminé.
voici mes deux hypotheses :
- l'interpreteur php parcour le fichier a envoyer entierement avec la fct reafile(), puis se termine. a ce momant là le serveur envoi la page interpreté (donc le fichier). dans ce cas là je n'ai pas a me soucier du timeout php.
- l'interpreteur php a envoyé au serveur http les header qui lui les a envoyer au client puis il parcourt le fichier a envoyer qu'il envois directement au serveur puis le serveur au client. dans ce cas là le temps de d'execution du script php est le temps de telechargement du fichier, au quel cas je suis bloqué par le timeout php.
j'ai une preference pour la 1ere hypothese!
est ce que quelqu'un peut me confirmer ca et surtout m'apporter une explication precise du fonctionnement des header php avec le serveur http ?