|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : juillet 2009 Messages : 31 ![]() |
Bonjour,
Voilà j'ai un petit problème de script, je code donc un site où on peut télécharger des fichiers allant de 1Ko à plus de 500Mo, les fichiers viennent de mon serveur mais le plus souvent ils viennent de serveurs externes. Jusque là tout fonctionne, les fichiers passent à travers un fichier file.php, précisés par plusieurs variables GET pour désigner le fichier à télécharger, et un header est envoyé pour forcer le téléchargement, changer plusieurs variables statistiques au passage, etc. Le gros problème, dont je ne m'étais même pas rendu compte pendant la création de ce script il y a quelques semaines, c'est qu'une fois un téléchargement lancé, l'utilisateur ne peut naviguer nul part sur mon site, les pages "chargent", et n'aboutissent à rien avant la fin du téléchargement des fichiers qui passent à travers le header (on est donc obligé d'annuler le téléchargement pour pouvoir faire quelque chose sur le site). Après quelques tests, j'ai pu voir que cela ne touchait pas le site entier; cela concerne uniquement l'user qui télécharge, pas les autres users naviguant (ce qui est quand même une bonne nouvelle vu le contexte). Bon évidemment vous l'imaginez, lorsqu'on télécharge un fichier de 500Mo, il faut plusieurs heures pour le finir et le fait que mon site soit complètement figé pour l'user concerné c'est très très gênant, et frustrant pour celui-ci. J'ai cherché sur Internet et n'ai pas trouvé de cas similaire - je suppose que j'ai mal cherché - je suppose que le problème est dû au fait que le header fait passer le fichier concerné par mon site et qu'aucune autre header (donc page) ne peut être envoyé à l'user avant la fin du chargement. Y a-t-il une solution ? Est-ce une erreur de ma part ? Voici le code... Code :
Merci de m'avoir lu |
||
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Je verrais plus un problème au niveau du serveur web ou du client que de PHP lui même.
|
|
|
00
|
|
|
#3 | ||
|
Membre régulier
![]() Inscription : juin 2004 Messages : 66 ![]() |
J'ai moi même rencontré ce problème.
Le solution consiste à terminer la session avant l'envoi des données. Code :
__________________
Programmation Web - PHP, MySQL, JavaScript, etc. |
||
|
10
|
|
|
#4 |
|
Invité de passage
![]() Inscription : juillet 2009 Messages : 31 ![]() |
Non ce n'est pas un problème de serveur puisque j'ai fait le test en local et en ligne
Après beaucoup de recherche j'ai pu arriver à une conclusion similaire Blount, je vais tester cela immédiatement ! Merci Edit: ça marche nickel, merci infiniment, je me demande pourquoi les session sont en conflits avec les header comme ça. |
|
00
|
|
|
#5 | |
|
Membre régulier
![]() Inscription : juin 2004 Messages : 66 ![]() |
Citation:
Les données de session sont bloqués en écriture durant l'exécution d'une requête. Tout au long de l'exécution de celle-ci, les autres requêtes seront bloqué du au verrou sur la session. Tant que le verrou n'est pas libéré, le page est "en attente". Et effectivement, dès que le téléchargement est terminé, le verrou est libéré et tout de suite les autres requêtes reprennent. L'explication n'est pas forcément parlante pour tous le monde.
__________________
Programmation Web - PHP, MySQL, JavaScript, etc. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : juillet 2009 Messages : 31 ![]() |
Je comprends mieux, merci en tout cas
|
|
00
|
Copyright © 2000-2012 - www.developpez.com