xpatval Posté 20 Février 2009 Posté 20 Février 2009 Bonjour, J'ai un souci de comprenette concernant des téléchargements incomplets à partir d'un site (hébergé chez OVH - xxlplan). Les vidéos en download ont une taille allant de 30Mo à beaucoup plus, et chaque download ne va jamais à terme (certains fichiers de 50Mo sont téléchargés à hauteur de 5Mo, d'autre de 150Mo à hauteur de 35Mo). Pas de message d'erreur dans les logs, les fichiers sont pourtant chargés correctement sur le serveur. Le site étant pour adulte, je ne mets pas de lien. La requête est effectuée comme suit: header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment; filename=".basename($filename).";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($_SERVER['DOCUMENT_ROOT']."/fichier.wmv")); readfile($_SERVER['DOCUMENT_ROOT']."/fichier.wmv"); exit(0); Le POST_MAX_SIZE est à 32M. Pourriez-vous me donner une piste ? Merci, xpatval
jcaron Posté 20 Février 2009 Posté 20 Février 2009 Tu as une idée du temps au bout duquel ça s'arrête? J'ai tendance à penser qu'il est relativement fixe, par opposition à la taille du fichier transféré (qui va dépendre du débit). Tu peux regarder du côté de la directive Timeout dans la conf httpd. En théorie c'est prévu pour que ça ne pose pas de problème, mais en réalité, surtout avec des scripts, ça ne me paraît pas impossible du tout. Côté PHP, il y a aussi set_time_limit() et la valeur par défaut max_execution_time dans php.ini, mais ils ne concernent que le temps CPU plutôt que le temps réel. Si ce n'est rien de tout ça, il faut voir du côté de règles de filtrage IP qui pourraient avoir des timeouts mal calculés (i.e. depuis le début de le connexion plutôt que depuis le dernier paquet), mais normalement de nos jours ça ne se voit plus trop. Jacques.
xpatval Posté 20 Février 2009 Auteur Posté 20 Février 2009 Le max_execution_time est à 30. Le problème est que le xxlplan est un mutualisé, or, à par vérifier les parapètres via un phpinfo(), il m'est difficile d'en savoir beaucoup plus... Les download ont tendance à s'arrêter plutôt à un certain nombre de Mo, mais il y a des exceptions... xpatval
jcaron Posté 20 Février 2009 Posté 20 Février 2009 Va voir les commentaires sur readfile dans la doc PHP, tu vas voir que: - max_execution_time s'appliquerait quand même (donc set_time_limit(0) juste avant le readfile pourrait résoudre le problème). Comme quoi la description de tout ça reste très vague... - certains indiquent un problème de mémoire utilisée, mais je pense que ça dépend beaucoup de l'implémentation au niveau OS. Dans le pire des cas tu peux être obligé de lire le fichier et de le transmettre par "petits" bouts Jacques.
xpatval Posté 21 Février 2009 Auteur Posté 21 Février 2009 un php_value set_time_limit(0) dans le .htaccess pourrait-il régler la chose ?
jcaron Posté 23 Février 2009 Posté 23 Février 2009 Plutôt un set_time_limit(0) juste avant le readfile... Jacques.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant