Bonjour,

Je développe une application en PHP avec Symfony2.

J'ai implémenté des génération de rapports Excel, avec PHPExcel. Ces générations sont très longues car très grand nombre de données, pas grand chose à changer de ce côté-là.

Mon problème est que le traitement est très long, je cherche donc à faire patienter l'utilisateur.

J'ai étudié plusieurs pistes pour finalement en choisir une. Lors du submit du formulaire (qui va déclencher la génération et le téléchargement du fichier Excel), je lance un traitement régulier en Javascript, à base d'une méthode appelée régulièrement par setTimeout() et en faisant un get en ajax pour savoir où en est le serveur.

Si la requête n'est pas trop longue, ça marche bien, disons que ça me permet de savoir quand c'est finit pour effacer le message d'attente (jQuery BlockUI). En effet, vu que côté serveur je renvoie un fichier, côté client, tout est géré par le navigateur, je n'ai aucun moyen de savoir quand c'est finit.

Donc avec mon système décrit plus haut, c'est bon.

Maintenant, pour les longues requêtes, je m'aperçois d'une chose innatendue (que je vois grâce à Firebug) : la requête Ajax est bloquée, elle ne reçoit une réponse que quand la requête principale est terminée. Dommage, j'avais prévu un mécanisme pour informer l'utilisateur de l'avancement ...

Est-ce normal que la requête soit "bloquée" ? Je travaille avec WAMP, les requêtes ne sont pas traitées en parallèles ?

Merci pour votre aide,

Xavier