J'ai une appli web qui me permet de faire la supervision d'opérations de synchronisation de comptes informatiques (je vous passe le détail, mais en gros je pioche des informations de différentes sources de données, je fais des croisements et des tris, j'en tire des listes d'individus pour lesquels j'exécute des procédures de création de compte, de recherche de comptes existants, de lien entre ces différents comptes, d'adaptation des droits, d'archivage, etc.).
L'opération est relativement longue (l'exécution totale dure 15 minutes pour en gros 700 comptes), mais ça ne me pose pas vraiment de problème (ce qui est le plus coûteux est l'exécution de SQL dans des environnements fermés où je n'ai pas la main sur l'indexation des données et avec des critères sélectifs vraiment tordus ; j'en ai fait mon deuil, et ça reste raisonnable).
Mon souci, c'est que j'ai envie/besoin de pouvoir suivre exactement ce qui se fait pendant l'opération (en particulier, si j'ai un problème avec un compte, je veux le voir immédiatement et pas attendre les 15 minutes, mais ça doit aussi me permettre de voir en direct si quelque chose de plus global échoue).
Je n'utilise pas d'Ajax (c'est peut-être une erreur ici, mais je ne suis pas sûr que ça change vraiment grand chose, en fait), mais une série de document.getElementById('proutprouttagada').innerHTML+=lesinfosenplus; qui sont envoyés au navigateur pendant l'oparation une fois que le squelette de la page a été envoyé. En sachant qu'en parallèle, j'alimente en tableau javascript avec toutes les informations dont j'ai besoin sur chaque compte (en gros, à gauche de ma page j'ai la liste des comptes qui ont été traités qui s'agrandit, et à droite j'ai plusieurs divs qui, lorsque je clique sur un compte de la colonne de gauche, récupèrent des infos du tableau qui grandit à chaque itération et les mets en forme).
Au final, c'est EXTRÊMEMENT lent (sur Fx sous linux, ça me prends plus de 3Go de RAM et ça m'assassine un Xeon 4 coeurs ; sous Windows, c'est étrangement beaucoup moins catastrophique et ça reste assez raisonnable même sur un Atom, mais ça n'est quand même pas "vendable" : plus le processus avance et moins c'est réactif... or idéalement ça devrait pouvoir traiter des populations de 30 à 40000 individus pour que je puisse diffuser mon outil à d'autres établissements plus gros) et la page générée est énorme (16Mo de code source une fois le traitement fini).
Brayf : si quelqu'un a des idées, même d'ordre général et même si ça doit me faire tout changer au niveau fonctionnement (mais en gardant l'idée d'une mise à jour de l'affichage pendant l'exécution du processus), je suis preneur. En sachant (histoire de faire taire le quelque-un (
