Bonjour,
Je développe une application PHP qui interroge une base postgresql de données génétiques. L'application lance des requêtes d'export, elles ont été optimisées avec l'aide un prestataire mais restent très longues (plusieurs minutes).
Ma question est : comment après choix des paramètres d'export par l'utilisateur, lui rendre la main pour poursuivre sa navigation, pendant que son export est préparé (et transmit plus tard si besoin) ?
J'ai essayé avec AJAX de gérer mes exports pour que s'ils durent moins d'un certain temps, il soient affichés par le navigateur (sous forme de fichiers excel), sinon, ils sont envoyés par mail. Je suis passé par une requête XMLHttpRequest asynchrone (post via $.ajax) mais si j'arrive à rendre la main à l'utilisateur après un temps défini par le timeout de la requête ajax (pendant que le code d'export PHP termine de s'exécuter), je ne peux plus naviguer tant que la requête SQL n'est pas terminée.
Ce site confirme que même asynchrones, les requêtes AJAX sont séquentielles. Pourriez vous m'indiquer quelle piste suivre pour ne pas bloquer l'utilisateur dans sa navigation pendant que ses exports s'exécutent (il peut être bloqué un certain temps, cela ne pose pas de pb, mais au bout d'un moment je souhaiterais lui rendre la main pour poursuivre la navigation et récupérer son export plus tard (par mail par ex). L'autre solution à laquelle je pense est de faire une file d'attente dans une table sql et de lancer des taches planifiées pour scruter cette table a fréquence déterminée.
Peut être existe t'il d'autres solutions, et peut être que ma question est dans le mauvais forum de discussion... Merci d'avance pour votre aide.
Partager